应用服务:无法从应用设置中读取连接字符串设置

App Service: Not able to read connection string setting from App settings

我想要实现的目标

您好,我有 dotnetcore web Api,它在 Azure App Service 服务器场中 运行ning。我正在尝试从应用服务配置应用设置中读取连接字符串。

到目前为止我尝试了什么

下面是我尝试读取连接字符串设置的方式

var configValue = (ConfigurationManager.AppSettings["PNLDBConnectionString"] ?? String.Empty).ToString();

我已经在应用服务配置部分添加了连接字符串,如下所示

还添加了一个应用设置密钥,如下所示

但是无论哪种方式,如果我要从 app.config 中删除连接字符串密钥并进行部署;然后在尝试 运行 任何 API 端点时抛出以下错误,这实际上意味着它无法读取所述连接字符串 属性

知道吗,我可能在这里遗漏了什么?请推荐。

编辑:

app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>

    <add key ="Encrypted" value="true"/>
    <add key ="PNLDBConnectionString" value="connection string value"/>

  </appSettings>
</configuration>
  • 在 Azure 门户中添加新的 ConnectionString 之后 => 配置 => 应用程序设置 在appsettings.json文件

    中添加连接字符串
     "ConnectionStrings": {
        "DefaultConnection": "Server=SQLAzure; Database=PNLDB; Trusted_Connection=True; MultipleActiveResultSets=true"
      }
    

Startup.cs, 设置配置设置以使用 appsettings.json.

覆盖环境变量
public IConfiguration Configuration { get; set; }
public Startup()
{
    Configuration = new Configuration()
        .AddJsonFile("appsettings.json")
        .AddEnvironmentVariables();    
}

Startup

中配置数据库
public void ConfigureServices(IServiceCollection services)
{
    services
        .AddEntityFramework()
        .AddSqlServer()
        .AddDbContext<ProjectContext>(options =>
        {
            var connString = Configuration.Get("PNLDBConnectionString");
            options.UseSqlServer(connString);
        });
}
  • 检查 KUDU(控制管理器)中的连接字符串

更新

var connection = 
    System.Configuration.ConfigurationManager.
    ConnectionStrings["PNLDBConnectionString”].ConnectionString;

您的程序集还需要引用 System.Configuration。

  • 我发现您在连接字符串部分添加了值并在代码中使用了应用程序设置。
  • 您需要在门户的应用程序设置中添加值

查看 Kudu 门户,在环境变量下我可以看到设置为

PNLDBConnectionString = xxxxxxxxxx
APPSETTING_PNLDBConnectionString = xxxxxxxxx

使用,Environment.GetEnvironmentVariable("APPSETTING_PNLDBConnectionString")居然成功了。不得不修改代码行有点像

var configValue = ConfigurationManager.AppSettings["PNLDBConnectionString"] 
                 ?? Environment.GetEnvironmentVariable("APPSETTING_PNLDBConnectionString")
                 ?? String.Empty;