在使用Azure函数时,我遇到一种情况,我希望功能应用程序处于“禁用”模式的一些功能,而其他功能则要启用。问题是,我不想使用可以轻松启用/禁用各个功能的功能屏幕手动进行操作。有一篇文章说Functions 2.x支持此功能(Functions 1.x对我来说不是一个选择)。
https://docs.microsoft.com/en-us/azure/azure-functions/disable-function
只是这篇文章对需要做的事情有些含糊。它说,我引用>
在“功能2.x”中,您可以通过使用应用程序设置禁用功能。例如,要禁用名为QueueTrigger的功能,可以创建一个名为AzureWebJobs.QueueTrigger.Disabled的应用程序设置,并将其设置为true。要启用该功能,请将应用程序设置设置为false。
我尝试过此操作,但是它不能像所记录的那样工作。我有一个名为foo
的函数应用程序和一个名为bar
的函数。我都尝试过:
disabled: true
在function.json中
以及:
foo: {
bar: {
disabled: true
}
}
进行这些更改并重新部署后,对UI无效。我想念什么?
答案 0 :(得分:0)
推荐的方法是使用应用程序设置,您可以通过转到门户来进行设置。 [注意:说应用程序设置时,它们并不是指function.json。]
选项1:使用应用设置
在azure门户中,导航到功能应用程序foo
-> Confuguration
,您将看到Application Settings
选项卡,其中已经定义了一些变量。您需要通过单击New application setting
按钮来创建一个新变量。将名称设置为AzureWebJobs.bar.Disabled
,将值设置为true
。请注意,函数应用程序名称foo
不在变量名称中。
选项2:使用host.json 因为您正在寻找禁用代码中的功能的方法,所以可以尝试在host.json中执行此操作。请注意,这是为本地开发而设计的,不建议用于产品,但它可以工作。 https://docs.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.
}
请注意,门户网站将无法正确显示此信息,并列出了已启用的“栏”,但在点击该功能时会得到404。
选项3:使用“禁用”属性
如果使用的是C#,还可以使用[Disable]
属性。这是一个Function 1.x构造,但它也适用于2.x。与上面类似,门户网站用户界面将无法正确显示。
[Disable]
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
}
选项4:删除FunctionName属性 仅在使用C#时。这听起来可能违反直觉,但是如果您从函数中删除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)
{
}
这在两个运行时都应该起作用。该功能不会显示在azure门户中。