C# Azure函数从配置访问连接字符串
我在Azure Linux环境中托管了Azure Function V3。我正在尝试从配置部分读取连接字符串。但我不明白。我尝试将连接字符串放在C# Azure函数从配置访问连接字符串,c#,azure-sql-database,azure-functions,C#,Azure Sql Database,Azure Functions,我在Azure Linux环境中托管了Azure Function V3。我正在尝试从配置部分读取连接字符串。但我不明白。我尝试将连接字符串放在应用程序设置和连接字符串部分,如下所示 { "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "AzureWebJobsDashboard": "UseDevelopmentStorage=true" }
应用程序设置
和连接字符串
部分,如下所示
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true"
},
"ConnectionStrings": {
"DefaultConnection": "<My connection string>"
}
}
我正在使用依赖项注入,我的Startup
类如下所示
using BHD.Data.Data;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
[assembly: FunctionsStartup(typeof(BHD.AzureFunctions.Startup))]
namespace BHD.AzureFunctions
{
class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
var sqlConnection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
builder.Services.AddDbContext<ApplicationDbContext>(
options => options.UseSqlServer(sqlConnection));
}
}
}
在Azure Functions 2+中获取配置的方法是
IConfiguration
,而不是ConfigurationManager
您可以将IConfiguration
注入到大多数可能注入其他内容的地方,但在Startup()
中,您需要使用类似的内容
IConfiguration
在Azure中托管时将自动读取函数应用程序设置,在本地运行时将自动读取local.settings.json
编辑(参考文献): 这方面的文档既不清楚也不容易找到。关于GitHub也有很多相关的讨论和困惑 主要来源是。在其中,几乎很容易被忽略: 函数主机注册许多服务。以下服务可以安全地作为应用程序中的依赖项: […]
Microsoft.Extensions.Configuration.IConfiguration
[…]
它还说:
应用程序设置中定义的值在IConfiguration实例中可用
主人为你做这件事;您无需执行任何操作,如上所述,它会根据您的托管上下文自动从正确的源获取设置。您是否尝试过读取环境变量?@CarlosGarcia,是的,我尝试过环境变量,但我希望它能与
连接字符串
设置一起工作。下面Sellotape的回答很有帮助。非常感谢。谢谢你,Sellotape,我可以知道你在哪里找到使用I配置的方法吗?如果你能链接到这个页面就太好了。@PriyankPanchal-我已经用一些参考资料更新了答案。