Rah*_*oni 3 azure azure-functions
在使用 Azure 函数时,我遇到一种情况,我希望函数应用程序的一些函数处于“禁用”模式,而其他函数则启用。问题是,我不想使用可以轻松启用/禁用各个功能的功能屏幕手动执行此操作。有一篇文章说 Functions 2.x 支持这个(Functions 1.x 不是我的选择)。
https://learn.microsoft.com/en-us/azure/azure-functions/disable-function
只是这篇文章对于需要做什么有点模糊。它说,我引用>
在 Functions 2.x 中,您可以使用应用程序设置禁用功能。例如,若要禁用名为 QueueTrigger 的函数,请创建一个名为 AzureWebJobs.QueueTrigger.Disabled 的应用设置,并将其设置为 true。要启用该功能,请将应用程序设置设置为 false。
我尝试了这个,但它不像记录的那样工作。我有一个名为 的函数应用程序foo
和一个名为 的函数bar
。我都尝试过:
disabled: true
在函数.json中
也:
foo: {
bar: {
disabled: true
}
}
Run Code Online (Sandbox Code Playgroud)
进行这些更改并重新部署后,不会对 UI 产生任何影响。我缺少什么?
推荐的方法是使用应用程序设置,您可以通过访问门户来执行此操作。[注意:当他们说应用程序设置时,他们并不是指 function.json。]
选项 1:使用应用程序设置
在 azure 门户中,导航到函数应用程序foo
-> Confuguration
,您应该会看到Application Settings
包含一些已定义变量的选项卡。您需要通过单击New application setting
按钮创建一个新变量。将名称设置为AzureWebJobs.bar.Disabled
并将值设置为true
。请注意,函数应用程序名称foo
不会出现在变量名称中。
选项 2:使用 host.json 因为您正在寻找从代码禁用功能,所以您可以尝试在 host.json 中执行此操作。请注意,这是用于本地开发,不建议用于产品,但它是有效的。 https://learn.microsoft.com/en-us/azure/azure-functions/functions-host-json#functions
{
"functions": [ "function1", "function2" ] // Don't list function "bar" here, and it would get disabled.
}
Run Code Online (Sandbox Code Playgroud)
请注意,门户不会正确显示此功能,并将“bar”列为已启用,但在点击该功能时您将收到 404。
选项 3:使用禁用属性
如果您使用 C#,也可以使用该[Disable]
属性。这是 Functions 1.x 构造,但它也适用于 2.x。与上面类似,门户 UI 将无法正确显示这一点。
[Disable]
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
}
Run Code Online (Sandbox Code Playgroud)
选项 4:仅在使用 C# 时删除 FunctionName 属性。这听起来可能违反直觉,但如果您从函数中删除 FunctionName 属性,则不会将其视为这样。
// [FunctionName("Function1")] // Comment this or delete this line to disable this function
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
}
Run Code Online (Sandbox Code Playgroud)
这应该在两个运行时都有效。该功能不会显示在天蓝色门户中。
归档时间: |
|
查看次数: |
3320 次 |
最近记录: |