应用服务:无法从应用设置中读取连接字符串设置
App Service: Not able to read connection string setting from App settings
我想要实现的目标
您好,我有 dotnetcore web Api,它在 Azure App Service 服务器场中 运行ning。我正在尝试从应用服务配置应用设置中读取连接字符串。
到目前为止我尝试了什么
- 运行时版本:netcoreapp3.1 version-2.31.0.1
- 托管环境:Azure 应用服务
下面是我尝试读取连接字符串设置的方式
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;
我想要实现的目标
您好,我有 dotnetcore web Api,它在 Azure App Service 服务器场中 运行ning。我正在尝试从应用服务配置应用设置中读取连接字符串。
到目前为止我尝试了什么
- 运行时版本:netcoreapp3.1 version-2.31.0.1
- 托管环境:Azure 应用服务
下面是我尝试读取连接字符串设置的方式
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;