无法从appsettings.json获取价值

时间:2017-08-22 12:38:00

标签: c# asp.net json asp.net-web-api asp.net-core

在新创建的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;()做同样的伎俩。

1 个答案:

答案 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