[英]How to use properly ConfigurationManager.GetSection() in .Net Core 2.2
我在.net核心的Web應用程序中使用此方法獲取配置值時遇到一些問題。
var settings = ConfigurationManager.GetSection("JwtBearerSettings/Issuer");
我正在引用的一個項目調用此方法。 它也在.NET Core 2.2中,並且配置設置在文件中
appsettings.json
問題是,當我總是調試時,我會得到settings == null
我一直在尋找類似的問題,但是我無法解決。
我的json是
{
"JwtBearerSettings": {
"Issuer": "Auth.MyStuff.Api",
"PrivateKey": "Blablabla",
"ExpirationTime": "15"
}
}
您知道甚至可以使用這種方法嗎?
我是否缺少使用圖書館獲取Web應用程序配置的功能?
鑒於您已經創建了如下屬性:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
}
然后,您可以訪問元素,如下所示:
var issuer = Configuration["JwtBearerSettings:Issuer"],
讀取配置的最簡單方法是一次僅讀取一個值。 結構化數據用冒號分隔,因此您的示例變為:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.