繁体   English   中英

从ASP.NET Core访问Azure App Service ConnectionString

[英]Access Azure App Service ConnectionString from ASP.NET Core

我有一个 azure 应用服务,我是这样设置的:

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_

这在提供者的源代码中也很明显。

有几个选项可以解决这个问题:

  1. 在 Azure 门户的连接字符串部分将类型更改为Custom
  2. 在 Azure 门户中更改为ConectionStrings:db应用程序设置

这正在 GitHub 上进行跟踪: https://github.com/dotnet/runtime/issues/36123

而不是从界面获取配置

IConfiguration.GetConnectionString("db") 

试着从

Configuration.GetConnectionString("db")

在生产中,您在 production.appsetting.json 中有一个空字符串,并直接在连接字符串下添加 azure(appservice) 配置中的值(这将覆盖 json 设置文件)。 从 appsettings 读取不需要 nugets

我也很困惑,所以这里是:

您有两个选项可以在本地指定连接字符串:

  1. launchSettings.json(环境变量部分)
  "environmentVariables": {
     "ASPNETCORE_ENVIRONMENT": "Development",
     "SQLAZURECONNSTR_SomeConnectionString": "DefaultEndpointsProtocol=blah"
   }
  1. appSettings.json
  "ConnectionStrings": {
    "SomeConnectionString": "DefaultEndpointsProtocol=blah"
  }

无论采用哪种方式,您都可以通过调用以下方式获取连接字符串设置:

IConfiguration.GetConnectionString("SomeConnectionString")

当部署到 Azure 时,上面的 Function 调用也将起作用,因为它使用EnvironmentVariables配置提供程序来读取设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM