gpt4 book ai didi

c# - Asp.Net Core 2.0 中的 Configuration.GetSection 获取所有设置

转载 作者:行者123 更新时间:2023-12-04 01:41:08 26 4
gpt4 key购买 nike

我正在尝试学习检索配置信息的各种方法,以便确定为即将到来的项目设置和使用配置的最佳路径。
我可以使用访问各种单一设置

var sm = new SmsSettings 
{
FromPhone = Configuration.GetValue<string>("SmsSettings:FromPhone"),

StartMessagePart = Configuration.GetValue<string>("SmsSettings:StartMessagePart"),

EndMessagePart = Configuration.GetValue<string>("SmsSettings:EndMessagePart")
};
我还需要能够计算设置、确定某些设置的值等。所以我正在构建一个解析方法来执行这些类型的事情,并且需要设置文件的整个部分,这就是我假设 GetSection 所做的。
错误的。
appsettings.json :
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=TestingConfigurationNetCoreTwo;Trusted_Connection=True;MultipleActiveResultSets=true",
"ProductionConnection": "Server=(localdb)\\mssqllocaldb;Database=TestingConfigurationNetCoreTwo_Production;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"SmsSettings": {
"FromPhone": "9145670987",
"StartMessagePart": "Dear user, You have requested info from us on starting",
"EndMessagePart": "Thank you."
}
}
这段代码:
var section = Configuration.GetSection("ConnectionStrings");
返回这些结果:
Image 1: variable properties
Image 2: Drilling down into JsonConfigurationProvider
出现了几个问题。
  • 为什么这会返回 3 个不同的 JsonConfigurationProviders,其中一个包含 appsettings.json 文件中的所有设置(如图 2 所示)
  • 为什么 GetSection("ConnectionStrings") 实际上不这样做,返回 ConnectionStrings 的子子项
  • 给定数字 2,您实际上如何检索 ConnectionStrings 的 child ?
  • 假设一个模型ConnectionStrings,有一个属性,List Connections,这个部分可以转换成一个对象吗?
  • 最佳答案

    我明白答案已被接受。但是,提供适当的示例代码,以防万一有人想了解更多......

    绑定(bind)自定义强类型配置非常简单。 IE。配置 json 如下所示

    {
    "AppSettings": {
    "v": true,
    "SmsSettings": {
    "FromPhone": "9145670987",
    "StartMessagePart": "Dear user, You have requested info from us on starting",
    "EndMessagePart": "Thank you."
    },
    "Auth2Keys": {
    "Google": {
    "ClientId": "",
    "ClientSecret": ""
    },
    "Microsoft": {
    "ClientId": "",
    "ClientSecret": ""
    },
    "JWT": {
    "SecretKey": "",
    "Issuer": ""
    }
    }
    }
    }

    你的 C# 类看起来像
    public class SmsSettings{
    public string FromPhone { get; set;}
    public string StartMessagePart { get; set;}
    public string EndMessagePart { get; set;}
    }

    public class ClientSecretKeys
    {
    public string ClientId { get; set; }
    public string ClientSecret { get; set; }
    }

    public class JWTKeys
    {
    public string SecretKey { get; set; }
    public string Issuer { get; set; }
    }

    public class Auth2Keys
    {
    public ClientSecretKeys Google { get; set; }
    public ClientSecretKeys Microsoft { get; set; }
    public JWTKeys JWT { get; set; }
    }

    您可以通过 GetSection("sectionNameWithPath") 获取该部分,然后通过调用 Get<T>() 转换为强类型;
    var smsSettings = Configuration.GetSection("AppSettings:SmsSettings").Get<SmsSettings>();
    var auth2Keys= Configuration.GetSection("AppSettings:Auth2Keys").Get<Auth2Keys>();

    对于简单的字符串值

    var isDebugMode = Configuration.GetValue("AppSettings:IsDebugMode");

    希望这可以帮助...

    关于c# - Asp.Net Core 2.0 中的 Configuration.GetSection 获取所有设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47433027/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com