Azure函数-ConnectionString属性尚未初始化

时间:2018-10-25 13:47:23

标签: azure connection-string azure-functions

我在Visual Studio中开发了一个Azure函数,并且该函数在一年前发布在Azure中时就可以使用。

现在,我在Visual Studio中从该Azure函数制作了一个模板,并且我更改了一些细节,但是基本上是相同的。当我在本地测试时,它可以正常工作。

但是当我在Azure中发布它并尝试对其进行测试时,出现此错误:

The ConnectionString property has not been initialized

我通常在“应用程序设置”中编写“连接字符串”(它对于较旧的Azure函数非常有效)。

以下是函数获取连接字符串的值的方式:

var repo = new GranularRepository(ConfigurationManager.AppSettings["BoConnectionString"]);

我也尝试过:

var repo = new AvgDeliveryTime_GranularRepository(Environment.GetEnvironmentVariable("BodbConnectionString"));

2 个答案:

答案 0 :(得分:1)

根据您的描述,我无法区分您的函数运行时。

对于v1:

您可以同时使用ConfigurationManager.AppSettingsSystem.Environment.GetEnvironmentVariable在Azure中获取连接字符串。

var a = ConfigurationManager.AppSettings["BoConnectionString"];
var b = System.Environment.GetEnvironmentVariable("BoConnectionString");

对于v2:

您可以使用System.Environment.GetEnvironmentVariableConfigurationBuilder来获取它。添加ExecutionContext参数,该参数用于定位功能应用程序目录。

var a= System.Environment.GetEnvironmentVariable("BoConnectionString");
/////////////
public static void Run(...,ExecutionContext context)
{
    var config = new ConfigurationBuilder()
        .SetBasePath(context.FunctionAppDirectory)
        .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables()
        .Build();

    // Get Connection strings
    var connParameter= "MySqlAzureConnection";
    string connectionString = config.GetConnectionString($"{connParameter}");
}

在v1和v2中,您都可以在应用程序设置中设置连接字符串。 enter image description here

有关更多详细信息,您可以参考此issue

答案 1 :(得分:0)

我通过创建一个新的Azure Function项目对其进行了修复。

所以我的结论是,从另一个Azure函数制作一个模板并将其用作Visual Studio中的新项目正在制造问题。