我已经实现了由HttpTrigger触发的Azure功能(在.Net Core 2.2上运行的v2)。指定Disable属性或使用“应用程序设置”(“ AzureWebJobs.Function1.Disabled”:“ true”)后,我仍然可以通过Postman到达此终结点。这是仅与HttpTriggers一起发生的情况。我也在使用的ChangeFeed触发器和QueueTriggers能够按预期工作。
我在本地运行时尝试过的一些方法: 1.使用local.settings.json,我仅添加了AzureWebJobs..Disabled值 2.我添加了Disable属性 3.我添加了具有定义设置的Disable属性。
启动功能项目时,控制台确实显示“功能Function1已禁用。”
我已经用我的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)
{}
我想我会在邮递员内收到404。任何想法,方向或其他信息都会受到赞赏。
答案 0 :(得分:2)
我也可以重提您的问题。尽管日志显示该功能已禁用,但是您仍然可以调用HTTP触发器。 对我来说似乎是个错误。我在Github上打开了一个问题:https://github.com/Azure/azure-functions-host/issues/4764
从github问题更新:
仅在使用CLI(或VS)在本地运行时会发生这种情况吗? Http 除非通过Admin请求调用,否则请求应返回404- 这使门户网站能够继续测试功能。什么时候 通过CLI运行,但是,我相信所有请求都被视为 管理员请求。
是的,我可以确认在Azure中部署时确实确实有所不同。 当我在此处使用应用程序设置并使用功能键(而不是 主键),则呼叫返回404。
答案 1 :(得分:1)
我测试了本地并获得了与您相同的结果,我发现它不仅可以禁用HTTP触发功能,如果同时禁用其他类似Timer的功能,则只能运行HTTP。但是我使用Azure进行测试,它将响应404。
因此,也许您可以使用host.json禁用它,实际上它应该显示您想要的运行功能。如果只有一个或要禁用所有功能,则可以使用空字符串设置数组,如下面的代码所示。
{
"functions": [ null ],
"version": "2.0"
}
或者像这样仅运行Function2然后禁用Function1:
{
"functions": [ "Function2" ],
"version": "2.0"
}
希望这可以为您提供帮助。
答案 2 :(得分:0)