如何在同一appsettings.json中引用另一个键

时间:2019-03-26 18:34:44

标签: asp.net json asp.net-mvc asp.net-web-api asp.net-core

我想知道是否有一种方法可以引用ASP.NET/Core项目中同一appsettings.json中的另一个键。

在下面的示例中,我想知道是否可以引用“ DefaultConnection”中的“ DBName”键,因为它们共享相同的值:

{   “ DBName”:“ MyDbName”,

“ ConnectionStrings”:{     “ DefaultConnection”:“服务器=本地主机;端口= 3306;用户=用户名;数据库=” MyDbName“;”   } }

1 个答案:

答案 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覆盖连接字符串值。