首页 > 解决方案 > 禁用 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。感谢任何想法、方向或其他信息。

标签: c#azure-functions

解决方案


我也可以重现您的问题。尽管日志显示该功能已禁用,但您仍然可以调用 HTTP 触发器。对我来说似乎是一个错误。我在 Github 上打开了一个问题:https ://github.com/Azure/azure-functions-host/issues/4764

从 github 问题更新:

这仅在使用 CLI(或 VS)在本地运行时发生吗?除非通过管理员请求调用,否则 Http 请求应返回 404——这允许门户继续能够测试功能。但是,当通过 CLI 运行时,我相信所有请求都被视为管理员请求。

是的,我可以确认这在 Azure 中部署时确实有所不同。当我在那里使用应用程序设置并使用功能键(不是主键)时,调用返回 404。


推荐阅读