代码之家  ›  专栏  ›  技术社区  ›  eftpotrm

无法读取数据appsettings.json文件

  •  1
  • eftpotrm  · 技术社区  · 7 年前

    我肯定我出了点毛病,但我看不出来,对不起。进入启动代码提示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"));
        }
    }
    

    配置测试仪:

    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
        }
    }
    

    public class EnvironmentConfig
    {
        public string Name;
    
    }
    

    appSettings.json文件:

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

    我错过了什么?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Kirk Larkin    7 年前

    使用时 IServiceCollection.Configure ConfigurationBinder 类中的值进行绑定 appSettings.json 文件到您的 EnvironmentConfig only binds against properties 领域 对公众 :

    public class EnvironmentConfig
    {
        public string Name { get; set; }
    }
    
        2
  •  2
  •   jyothi530    7 年前

    在使用配置选项之前,请在ConfigureServices方法中添加以下行 serives.Configure<T>()

    services.AddOptions();