从 Azure 函数触发器中的函数 .json 文件中读取自定义属性



我们如何读取 Azure 函数的 function.json 文件中的一些自定义属性?

我想读取刚刚添加到 run.csx 文件中的 function.json 文件的属性的值。

我正在 Azure 门户本身上执行此操作。

注意:我在互联网上的任何地方都找不到解决方案。

Azure 函数具有特定的架构,您不能或不应该在那里添加自定义配置。 http://json.schemastore.org/function

应为此使用 Azure 函数应用设置,如下所述:

https://learn.microsoft.com/bs-latn-ba/azure/azure-functions/functions-app-settings

这是可能的。 ExecutionContext.FunctionDirectory将提供包含其function.json文件的函数本地目录的路径。然后,从函数中正常访问该文件很简单。在下面的示例中,我使用 ConfigurationBuilder 像任何其他 JSON 配置文件一样加载文件。

using System;
using System.Reflection;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
public static class Function1
{
    [FunctionName("Function1")]
    public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ExecutionContext context, ILogger log)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(context.FunctionDirectory)
            .AddJsonFile("function.json")
            .AddUserSecrets(Assembly.GetExecutingAssembly(), true)
            .Build();
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
        log.LogInformation($"Fucntion Setting value: {config["generatedBy"}");
}

我不对在function.json中使用自定义值的智慧发表评论.

在开发过程中,Visual Studio经常创建和rec-create function.json因此将值注入function.json可能会很棘手。(我需要在构建项目后但在运行项目之前手动编辑 bin 文件夹中的function.json文件。

function.json中的值不能用作任何触发器/输入/输出绑定的参数。所以你不能做以下事情:

[FunctionName("Function1")]
public static void Run([TimerTrigger("%customproperty%")] TimerInfo myTimer, ExecutionContext context, ILogger log)

最新更新