在新创建的asp.net core 2.0 web API项目中,我想使用来自appsettings.json的值:
{
"JWTSettings":
{
"SecretKey": "blahblahbla",
"Issuer": "QuinCApi",
"Audience": "http://localhost:10080/",
"LifeTimeInMinutes": 1
}
}
为此创建模型
public class JWTSettings
{
public string SecretKey { get; set; }
public string Issuer { get; set; }
public string Audience { get; set; }
public int LifeTimeInMinutes { get; set; }
}
在Startup.cs中,我使用以下方法注册了它:
在构造函数中:
IConfigurationBuilder builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", false, true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true)
.AddEnvironmentVariables();
在ConfigureServices方法中:
var appSettings = Configuration.GetSection("JWTSettings");
services.Configure<JWTSettings>(appSettings);
然后使用DI我试图获得价值,但有时为某些字段返回正常值,有时(几乎总是)返回&#34; ValuesAPI&#34;,但不是真正的价值。我做错了什么?
P.S。 Configuration.GetValue&lt;&gt;()做同样的伎俩。
答案 0 :(得分:0)
在使用DI访问模型类属性的方法中
JWTSettings
您应该在.NET Core中使用IOptions<T>
模式遵循以下方法。
public SampleDIMethod(IOptions<JWTSettings> settings)
{
//returns an object of type JWTSettings
var securitySettings = settings.Value;
}
请参阅以下链接
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration