在HttpTrigger Azure功能上禁用属性或应用程序设置不起作用

时间:2019-08-05 02:56:16

标签: c# azure-functions

我已经实现了由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。任何想法,方向或其他信息都会受到赞赏。

3 个答案:

答案 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)

您也可以通过以下门户网站禁用:

enter image description here