我在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"));
答案 0 :(得分:1)
根据您的描述,我无法区分您的函数运行时。
对于v1:
您可以同时使用ConfigurationManager.AppSettings
和System.Environment.GetEnvironmentVariable
在Azure中获取连接字符串。
var a = ConfigurationManager.AppSettings["BoConnectionString"];
var b = System.Environment.GetEnvironmentVariable("BoConnectionString");
对于v2:
您可以使用System.Environment.GetEnvironmentVariable
和ConfigurationBuilder
来获取它。添加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}");
}
有关更多详细信息,您可以参考此issue。
答案 1 :(得分:0)
我通过创建一个新的Azure Function项目对其进行了修复。
所以我的结论是,从另一个Azure函数制作一个模板并将其用作Visual Studio中的新项目正在制造问题。