Azure Functions .NET Core中的EF Core 2.0连接字符串

我使用.net核心在Azure Functions中使用EF core 2.0。 我正在尝试从local.settings.json读取db ConnectionString,其定义如下:

{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "AzureWebJobsDashboard": "UseDevelopmentStorage=true" }, "ConnectionStrings": { "MyDbConnStr": "Data Source=.;Initial Catalog=xxxxxxx" } } 

Environment.GetEnvironmentVariable()不返回任何连接字符串信息,我也不能使用带有.net核心的ConfigurationManager.ConnectionStrings。 如何从代码中访问连接字符串?

您可以使用Microsoft.Azure.WebJobs.Host一个帮助程序类:

 AmbientConnectionStringProvider.Instance.GetConnectionString("MyDbConnStr") 

这个类将工作委托给名为ConfigurationUtility内部类,它可以执行某些操作

 var configuration = new ConfigurationBuilder() .AddEnvironmentVariables() .AddJsonFile("appsettings.json", true) .Build(); var conn = configuration.GetConnectionString("MyDbConnStr"); 

您可以使用Environment.GetEnvironmentVariable 。 键是“ConnectionStrings:YourKey”

假设您的local.settings.json如下所示:

 { "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "AzureWebJobsDashboard": "UseDevelopmentStorage=true" }, "ConnectionStrings": { "sqldb_connection": "connection_string_here" } } 

使用Environment.GetEnvironmentVariable("ConnectionStrings:sqldb_connection", EnvironmentVariableTarget.Process); 获得价值