asp.net - 如何在同一个 appsettings.json 中引用另一个键
问题描述
我想知道是否有办法在 ASP.NET/Core 项目中引用同一 appsettings.json 中的另一个键。
在下面的示例中,我想知道是否可以在“DefaultConnection”中引用“DBName”键,因为它们共享相同的值:
{ "DBName": "MyDbName",
"ConnectionStrings": { "DefaultConnection": "server=localhost;port=3306;user=username;database="MyDbName";" } }
解决方案
不,这是不可能的。配置值只是字符串。它们不会被解析为变量之类的东西。我想你可以通过以下方式解决这个问题:
{
"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 覆盖连接字符串值。
推荐阅读
- prometheus - PromQL的rate()函数的理解
- java - 交通模拟 Java 对面
- c - 取消初始化多个自旋锁
- python - 这两个列表创建代码有什么区别(一个是带有 if 条件的普通 for 循环,另一个是线性代码)
- nginx - “/var/www/myapp/current/public/”的目录索引被禁止
- java - 如何在 Java GUI 中使用 mouseDragged()?
- ios - NSOperationQueue 中第一个低优先级操作的顺序无效
- machine-learning - 优先序列体验回放:了解它的工作原理
- python - 搜索多个标签 django taggit
- python - 给Tkinter,python中的条目赋值的最简单方法是什么?