C# 无法使用Asp.Net Core 3中的命名选项读取/绑定强类型类的配置设置
我无法使用命名选项将appsettings.json中的配置设置绑定到强类型类 appsettings.jsonC# 无法使用Asp.Net Core 3中的命名选项读取/绑定强类型类的配置设置,c#,asp.net-core,.net-core,appsettings,C#,Asp.net Core,.net Core,Appsettings,我无法使用命名选项将appsettings.json中的配置设置绑定到强类型类 appsettings.json "CJSettings": { "Normal": { "CSSUrl": "https://css.mydomain.com/main.min.css", "LogoName": "mysite-logo.png" }, "WL": { "CSSUrl": "https://css.mydomain.com/main_wl
"CJSettings": {
"Normal": {
"CSSUrl": "https://css.mydomain.com/main.min.css",
"LogoName": "mysite-logo.png"
},
"WL": {
"CSSUrl": "https://css.mydomain.com/main_wl.min.css",
"LogoName": "mysite-WL-logo.png"
},
"SEG": {
"CSSUrl": "https://css.mydomain.com/main_seg.min.css",
"LogoName": "mysite-seg-logo.png"
}}
CJSettings.cs
public class CJSettings
{
public string CSSUrl { get; set; }
public string LogoName { get; set; }
}
Startup.cs
services.Configure<CJSettings>("Normal", configuration.GetSection("CJSettings.Normal"));
services.Configure<CJSettings>("WL", configuration.GetSection("CJSettings.WL"));
services.Configure<CJSettings>("SEG", configuration.GetSection("CJSettings.SEG"));
services.Configure(“正常”,configuration.GetSection(“CJSettings.Normal”);
services.Configure(“WL”,configuration.GetSection(“CJSettings.WL”);
services.Configure(“SEG”,configuration.GetSection(“CJSettings.SEG”);
NormalService.cs
我正在尝试使用名称读取配置数据的服务。但是没有成功
public class NormalService : INormalService
{
private readonly CJSettings cjSettings;
public NormalService(IOptionsMonitor<CJSettings> options)
{
this.cjSettings = options.Get("Normal"); //getting null values for both properties
}
}
公共类正常服务:INormalService
{
私人只读设置;
公共正常服务(IOptionsMonitor选项)
{
this.cjSettings=options.Get(“Normal”);//获取两个属性的空值
}
}
正如您在上面所看到的,我尝试使用名称“Normal”读取数据,但得到了CJSettings对象的两个属性的空值
请帮我修一下这个。。。谢谢我不知道你的代码为什么不起作用。我可以建议我经常使用的以下解决方案:
public class CJSettings
{
public UrlSettings Normal { get; set; }
public UrlSettings WL { get; set; }
public UrlSettings SEG { get; set; }
}
public class UrlSettings
{
public string CSSUrl { get; set; }
public string LogoName { get; set; }
}
注册选项和服务:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CJSettings>(Configuration.GetSection(nameof(CJSettings)));
services.AddTransient<INormalService, NormalService>();
// the rest of your code
}
我不知道你的代码为什么不起作用。我可以建议我经常使用的以下解决方案:
public class CJSettings
{
public UrlSettings Normal { get; set; }
public UrlSettings WL { get; set; }
public UrlSettings SEG { get; set; }
}
public class UrlSettings
{
public string CSSUrl { get; set; }
public string LogoName { get; set; }
}
注册选项和服务:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CJSettings>(Configuration.GetSection(nameof(CJSettings)));
services.AddTransient<INormalService, NormalService>();
// the rest of your code
}
是的,这就是我错过的。我从来没有注意到我用的是圆点。谢谢mcuh@Dmitry的帮助。:)是的,这就是我错过的。我从来没有注意到我用的是圆点。谢谢mcuh@Dmitry的帮助。:)