c# - 禁用 HttpTrigger Azure 函数上的属性或应用程序设置不起作用
问题描述
我已经实现了一个由 HttpTrigger 触发的 Azure 函数(在 .Net Core 2.2 上运行的 v2)。在指定禁用属性或使用应用程序设置(“AzureWebJobs.Function1.Disabled”:“true”)后,我仍然可以通过 Postman 访问此端点。这只发生在HttpTriggers上。我也在使用的 ChangeFeed 触发器和 QueueTriggers 按预期工作。
我在本地运行时尝试过的一些事情: 1. 使用 local.settings.json,我只添加了 AzureWebJobs..Disabled 值 2. 我添加了 Disable 属性 3. 我添加了 Disable 属性定义的设置。
启动功能项目时,控制台确实显示“功能功能 1 已禁用”。
我已经用我的 local.settings.json 试过了
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"AzureWebJobs.Function1.Disabled": "true"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*"
}
}
该函数具有如下一般格式:
[Disable, FunctionName("Function1")]
public async Task<IActionResult> RunAsync(
[HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequest req,
Binder binder, ILogger log)
{}
我想我会在 Postman 中收到 404。感谢任何想法、方向或其他信息。
解决方案
我也可以重现您的问题。尽管日志显示该功能已禁用,但您仍然可以调用 HTTP 触发器。对我来说似乎是一个错误。我在 Github 上打开了一个问题:https ://github.com/Azure/azure-functions-host/issues/4764
从 github 问题更新:
这仅在使用 CLI(或 VS)在本地运行时发生吗?除非通过管理员请求调用,否则 Http 请求应返回 404——这允许门户继续能够测试功能。但是,当通过 CLI 运行时,我相信所有请求都被视为管理员请求。
是的,我可以确认这在 Azure 中部署时确实有所不同。当我在那里使用应用程序设置并使用功能键(不是主键)时,调用返回 404。
推荐阅读
- azure-ad-b2c - 如何在基于 IEF 的 IDP 元数据中配置 SAML NameID 格式?
- javascript - 从父类更新反应功能组件的状态
- talend - 子作业中的上下文默认值为 Null
- c# - 在特定时间安排任务
- ibm-mq - IBM MQ 同步点和 dotnet
- javascript - 使用 page.evaluate 时出现 Puppeteer 错误:TypeError: Cannot read property 'innerText' of null
- javascript - 尽管在服务器站点上成功,ajax 调用仍然失败
- javascript - Slimselect:搜索后选择第二个选项不起作用
- spring-kafka - KafkaTemplate.send(键,值,主题)与自定义分区?
- python - 方差分析 Python_Urgent