我想知道是否有一种方法可以引用ASP.NET/Core项目中同一appsettings.json中的另一个键。
在下面的示例中,我想知道是否可以引用“ DefaultConnection”中的“ DBName”键,因为它们共享相同的值:
{ “ DBName”:“ MyDbName”,
“ ConnectionStrings”:{ “ DefaultConnection”:“服务器=本地主机;端口= 3306;用户=用户名;数据库=” MyDbName“;” } }
答案 0 :(得分:1)
不。这是不可能的。配置值只是字符串。它们不会针对变量之类的东西进行解析。我想您可以通过以下方式解决此问题:
{
"DBName": "MyDbName",
"ConnectionStrings": {
"DefaultConnection": "server=localhost;port=3306;user=username;database={0}"
}
}
然后:
var connectionString = string.Format(Configuration.GetConnectionString("DefaultConnection"), Configuration["DbName"]);
基本上,您会在实际的连接字符串值中保留一个string.Format
占位符,然后通过您的DbName
配置值手动替换它。
但是,这非常脆弱。老实说,您一开始就没有这样做。配置可以被环境覆盖。因此,如果您需要执行诸如关闭数据库名称之类的操作,那么您可能处于不同的环境中,因此应该通过环境变量或特定于环境的JSON覆盖连接字符串值。