繁体   English   中英

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

[英]How to refer to another key in the same appsettings.json

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

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

{“ DBName”:“ MyDbName”,

“ ConnectionStrings”:{“ DefaultConnection”:“服务器=本地主机;端口= 3306;用户=用户名;数据库=” 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覆盖连接字符串值。

如何访问列表<object>来自 appsettings.Json?<div id="text_translate"><p> 在我的 appsettings.json 我有一个这样的字段</p><pre> "MyFields": [ { "name":"one", "type":"type1" "parameters":[{"key":"url","value":"myurl.com"}, {"key":"data","value":"mydata"}] }, { "name":"two", "type":"type2"... .. and so on } ]</pre><p> 我制作了一个具有以下属性的 class Myfield:</p><pre> public class MyField { [JsonProperty] public string? name { get; set; } [JsonProperty] public string? type { get; set; } [JsonProperty] public IDictionary<string,string>? parameters { get; set; } }</pre><p> 我正在尝试使用配置在另一个 class 中访问它,如下所示:</p><pre> //config is the configuration var myFields = config.GetSection("MyFields").Get<List<MyField>>();</pre><p> 问题是 myFields 结果是空的。 但是当我通过消除“参数”字段来做同样的事情时,它就像一个魅力。</p><p> 我知道这与匹配不当有关,但能得到一些帮助会很棒。</p></div></object>

[英]How can I access a List<object> from appsettings.Json?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 从同一解决方案中的另一个项目访问 appsettings.json 很热吗? 如何在构建期间为appsettings.json文件中的键设置值 您如何阅读 appsettings.json 与其前身网络表单相同的风格? 阅读 appsettings.json 很贵吗? 如何将 appsettings.json 中的日志级别参数用于 Serilog? 如何从.Net 6 中的 class 中的 appsettings.json 读取值? 如何将 appsettings.json 设置与设置名称中的点绑定 如何访问列表<object>来自 appsettings.Json?<div id="text_translate"><p> 在我的 appsettings.json 我有一个这样的字段</p><pre> "MyFields": [ { "name":"one", "type":"type1" "parameters":[{"key":"url","value":"myurl.com"}, {"key":"data","value":"mydata"}] }, { "name":"two", "type":"type2"... .. and so on } ]</pre><p> 我制作了一个具有以下属性的 class Myfield:</p><pre> public class MyField { [JsonProperty] public string? name { get; set; } [JsonProperty] public string? type { get; set; } [JsonProperty] public IDictionary<string,string>? parameters { get; set; } }</pre><p> 我正在尝试使用配置在另一个 class 中访问它,如下所示:</p><pre> //config is the configuration var myFields = config.GetSection("MyFields").Get<List<MyField>>();</pre><p> 问题是 myFields 结果是空的。 但是当我通过消除“参数”字段来做同样的事情时,它就像一个魅力。</p><p> 我知道这与匹配不当有关,但能得到一些帮助会很棒。</p></div></object> 如何读取appsettings.json值ASP.NET Core 如何将 Azure 服务调用添加到 appsettings.json
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM