调试w / VS2017 for Mac时,Azure函数无法读取/访问local.settings.json

时间:2018-05-02 21:56:22

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

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

ConfigurationManager.ConnectionStrings["connName"].ConnectionString

如果在Windows机器上调试Function应用程序(相同的git代码库)

,这可以正常工作

1 个答案:

答案 0 :(得分:2)

在运行时2.x​​(.net核心)上运行的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");
        .....
    }