为了账号安全,请及时绑定邮箱和手机立即绑定

如何在.Net Core 2.2中正确使用ConfigurationManager.

如何在.Net Core 2.2中正确使用ConfigurationManager.

C#
缥缈止盈 2023-08-20 10:05:01
我在 .net core 的 Web 应用程序中使用此方法获取配置值时遇到一些问题。 var settings =  ConfigurationManager.GetSection("JwtBearerSettings/Issuer");该方法由我引用的一个项目调用。它也在 .NET Core 2.2 中,配置设置位于文件中应用程序设置.json问题是,当我调试时,我总是发现settings == null我一直在寻找类似的问题,但我无法解决这个问题。我的json是{     "JwtBearerSettings": {        "Issuer": "Auth.MyStuff.Api",        "PrivateKey": "Blablabla",        "ExpirationTime": "15"        }}您知道是否可以使用这种方法吗?为了使用我的库获取网络应用程序配置,我是否遗漏了一些东西?
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

鉴于您已经创建了这样的属性:


public class Startup

{

    public Startup(IConfiguration configuration)

    {

        Configuration = configuration;

    }


    public IConfiguration Configuration { get; }

}

然后您可以访问这些元素,如下所示:


var issuer = Configuration["JwtBearerSettings:Issuer"],


查看完整回答
反对 回复 2023-08-20
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

读取配置的最简单方法是一次读取一个值。结构化数据用冒号分隔,因此您的示例变为:


var issuer = Configuration["JwtBearerSettings:Issuer"];

如果您正在阅读大量设置,这显然会很痛苦。因此,您可以简单地将模型对象绑定到一个部分。例如,如果您有一个包含属性的模型对象,比如说


class JwtBearerSettings {

    public string Issuer {get;set;}

}

然后您可以使用GetSection绑定到设置对象:


var jbs = new JwtBearerSettings();

Configuration.GetSection("JwtBearerSettings").Bind(jbs);

许多库都使用这种模式,因为它可以让您根据需要提供尽可能少或尽可能多的配置 - 只要模型预先填充了合理的默认值。


.Net Core 支持的第三种模式可以与 DI 一起使用:


在这里您可以向服务工厂注册您的配置模型:


var jbs = Configuration.GetSection("JwtBearerSettings");

services.Configure<JwtBearerSettings>(jbs);

并且,要在服务中引用您的设置,只需添加 IOptions 作为 ctor 参数:


public MyService(IOptions<JwtBearerSettings> jwtOptions)

{

    Config = jwtOptions.Value;

}


查看完整回答
反对 回复 2023-08-20
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信