【问题标题】:Azure Function not Able to Read/Access local.settings.json when Debugging w/ VS2017 for Mac使用 VS2017 for Mac 调试时 Azure 函数无法读取/访问 local.settings.json
【发布时间】:2018-05-02 21:56:21
【问题描述】:

使用 VS2017 for Mac 在本地调试 Azure 函数时尝试从 local.settings.json 配置文件读取时返回空/空值...扫描互联网后我无法确定这是否是已知的问题或是否有解决方法。这就是我访问配置设置的方式:

ConfigurationManager.ConnectionStrings["connName"].ConnectionString

如果在 Windows 机器上调试 Function 应用程序(相同的 git 代码库),这可以正常工作

【问题讨论】:

  • 不确定该特定问题,但 azure 函数也可以从环境变量中读取。因此,如果您在 Mac 上找不到本地设置的解决方案,您可以使用环境变量来存储/获取这些值。
  • 谢谢,将尝试解决此问题。

标签: c# azure .net-core azure-functions


【解决方案1】:

在运行时 2.x(.net core) 上运行的 Azure 函数 v2 不再支持 ConfigurationManager。见Azure Team's reply on github

当我在 Windows 上调试 v2 函数时,System.Configuration.ConfigurationErrorsException 抛出。而且 v1 仍然像您发现的那样运行良好。

正如@mariocatch 所说,尝试读取环境变量。

两个选项供您参考。

  1. 直接读取环境变量

    string connectionString = Environment.GetEnvironmentVariable("ConnectionStrings:connName");
    
  2. ExecutionContext context 添加到您的函数方法参数并读取本地设置。

    [FunctionName("FunctionName")]
    public static void Run(...,ExecutionContext context)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(context.FunctionAppDirectory)
            .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
            .AddEnvironmentVariables()
            .Build();
        string connectionString = config.GetConnectionString("connName");
        .....
    }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多