在Visual Studio中进行本地调试时,是否有一种方法可以轻松地只允许Azure函数的子集运行?

cetgtptt  于 2023-11-21  发布在  其他
关注(0)|答案(4)|浏览(181)

我正在使用Visual Studio编写一个包含多个Azure函数的类库。有一个计时器和队列触发函数的组合。如果我正在处理其中一个函数,并且只想调试它,我必须注解掉其他函数以防止它们也执行。有没有一种方法可以轻松地指示我只想在本地调试时执行整个函数集的子集?

wlp8pajw

wlp8pajw1#

你可以配置哪些函数加载到你的host.json中(完整的规范在这里)。具体来说,你需要定义一个顶级的functions属性:

{
    "functions": [ "QueueProcessor", "GitHubWebHook" ]
}

字符串
(Note这仅适用于本地使用;您可能希望为已发布的函数使用 function.json disabled属性。

bqjvbblv

bqjvbblv2#

你可以使用Disable()属性,但是,这并不比注解掉代码好多少:

public static void Run([TimerTrigger("0 */5 * * * *"), Disable()]TimerInfo myTimer, TraceWriter log)

字符串
您可以合并Disable()属性与#if指令,但它会使您的代码变得混乱。Disable()属性将仅在定义DEBUG时应用。
以下函数在释放模式下运行,在调试模式下禁用。

[FunctionName("TimerFunction")]
    public static void Run([
        #if DEBUG 
            TimerTrigger("*/5 * * * * *"), Disable()
        #else
            TimerTrigger("*/5 * * * * *")
        #endif
        ]TimerInfo myTimer, TraceWriter log)
    {
        log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
    }

i2byvkas

i2byvkas3#

您可以使用由local.settings.json文件中的settingName控制的DisableAttribute装饰函数。
以下是一个例子:

[QueueTrigger("%queueName%", Connection = "queues"), Disable("MyFuncABC")]ProcessMessage msg,

字符串

1tu0hz3e

1tu0hz3e4#

您可以在local.settings.json中列出本地运行时要禁用的函数。注意:local.settings.json应该有<CopyToPublishDirectory>Never</CopyToPublishDirectory>

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "AzureWebJobs.MyTimerFunction.Disabled": true
  }
}

字符串

相关问题