簡體   English   中英

無法從appsettings.json讀取數據

[英]Unable to read data afrom appsettings.json

對不起,我確定我有一些基本錯誤,但我無法發現。 單步執行啟動代碼表明正在正確加載appsettings.json,但測試類的config類為null。

啟動:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        var builder = new ConfigurationBuilder().AddJsonFile("appSettings.json");
        Configuration = builder.Build();
    }

    public IConfiguration Configuration { get; set; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().AddSessionStateTempDataProvider();
        services.AddSession();

        services.Configure<EnvironmentConfig>(Configuration.GetSection("EnvironmentConfig"));
    }
}

ConfigTester:

public class ConfigTester
{
    private readonly IOptions<EnvironmentConfig> _environmentConfig;

    public ConfigTester(IOptions<EnvironmentConfig> environmentConfig)
    {
        _environmentConfig = environmentConfig;
    }

    public string ConfigName()
    {
        return _environmentConfig.Value.Name;         //_environmentConfig.Value is set, but Name is null
    }
}

EnvironmentConfig:

public class EnvironmentConfig
{
    public string Name;

}

appSettings.json:

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  },
  "EnvironmentConfig": {
    "Name": "develop"
  }
}

我錯過了什么?

在使用serives.Configure<T>()配置選項之前,在ConfigureServices方法中添加以下行serives.Configure<T>() 要使用“選項”功能,您必須啟用它。

services.AddOptions();

使用IServiceCollection.Configure ,最終將appSettings.json文件中的值綁定到EnvironmentConfig類的ConfigurationBinder僅綁定屬性 這意味着您所要做的就是將您的公共領域更改為公共財產

public class EnvironmentConfig
{
    public string Name { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM