[英]Access Azure App Service ConnectionString from ASP.NET Core
我有一个 azure 应用服务,我是这样设置的:
但是当我调用IConfiguration.GetConnectionString("db")
时,我得到null
。
我读过这样的文章https://mderriey.com/2018/08/21/azure-app-service-connection-strings-and-asp.net-core/说“它只是有效”,但他们'我们都好几岁了。 我假设发生了一些变化,但是什么?
枚举我的IConfiguration
object 中的所有设置我没有连接字符串。 我在开发中做,我的appsettings.development.json
有一个connectionStrings: { db: "" }
定义。
我可以从代码中查看和读取 ENV 变量: POSTGRESQLCONNSTR_db
,它的值是正确的(我通过 Azure 门户设置的值)。
我应该期望能够执行IConfiguration.GetConnectionString("db")
吗? 或者我是否希望在 prod 和 dev 中读取 env 变量之间切换。
我是否需要包含一些 nuget package 以使IConfiguration
在 Azure 下使用这些 ENV 变量及其疯狂前缀工作?
我的startup.cs
基本上是这样的:
public Startup(IConfiguration configuration)
{
this.Configuration = configuration;
}
public IConfiguration Configuration { get; }
这个问题没有其他有趣的地方。
环境变量配置提供程序不支持POSTGRESQLCONNSTR_
前缀。 文档以间接的方式显示了这一点,其中声明支持以下前缀:
CUSTOMCONNSTR_
MYSQLCONNSTR_
SQLAZURECONNSTR_
SQLCONNSTR_
这在提供者的源代码中也很明显。
有几个选项可以解决这个问题:
Custom
。ConectionStrings:db
的应用程序设置。这正在 GitHub 上进行跟踪: https://github.com/dotnet/runtime/issues/36123 。
而不是从界面获取配置
IConfiguration.GetConnectionString("db")
试着从
Configuration.GetConnectionString("db")
在生产中,您在 production.appsetting.json 中有一个空字符串,并直接在连接字符串下添加 azure(appservice) 配置中的值(这将覆盖 json 设置文件)。 从 appsettings 读取不需要 nugets
我也很困惑,所以这里是:
您有两个选项可以在本地指定连接字符串:
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"SQLAZURECONNSTR_SomeConnectionString": "DefaultEndpointsProtocol=blah"
}
"ConnectionStrings": {
"SomeConnectionString": "DefaultEndpointsProtocol=blah"
}
无论采用哪种方式,您都可以通过调用以下方式获取连接字符串设置:
IConfiguration.GetConnectionString("SomeConnectionString")
当部署到 Azure 时,上面的 Function 调用也将起作用,因为它使用EnvironmentVariables
配置提供程序来读取设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.