C# 如何在startup.cs的配置方法中使用ConfigurationBinder

C# 如何在startup.cs的配置方法中使用ConfigurationBinder,c#,asp.net,asp.net-core,asp.net-core-mvc,C#,Asp.net,Asp.net Core,Asp.net Core Mvc,asp.net mvc 6 beta5 我已尝试使用config.json激活\disactive日志记录 public IConfiguration Configuration { get; set; } public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) { var configurationBuilder = new ConfigurationBuilde

asp.net mvc 6 beta5

我已尝试使用config.json激活\disactive日志记录

public IConfiguration Configuration { get; set; }

public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
         {
            var configurationBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
            .AddJsonFile("config.json")
            .AddEnvironmentVariables();
            Configuration = configurationBuilder.Build();

            DBContext.ConnectionString = Configuration.Get("Data:DefaultConnection:ConnectionString");
        }

public void ConfigureServices(IServiceCollection services)
        {
            services.AddOptions();
            services.Configure<AppSettings>(Configuration.GetConfigurationSection("AppSettings"));
        }

// Configure is called after ConfigureServices is called.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory)
        {
            // that line cause NullReferenceException  
            AppSettings settings = ConfigurationBinder.Bind<AppSettings>(Configuration);  
             if (settings.Log.IsActive)
             {
              ................
        }
公共IConfiguration配置{get;set;}
公开启动(IHostingEnvironment env、IApplicationEnvironment appEnv)
{
var configurationBuilder=new configurationBuilder(appEnv.ApplicationBasePath)
.AddJsonFile(“config.json”)
.AddenEnvironmentVariables();
Configuration=configurationBuilder.Build();
DBContext.ConnectionString=Configuration.Get(“数据:DefaultConnection:ConnectionString”);
}
public void配置服务(IServiceCollection服务)
{
services.AddOptions();
服务。配置和

是否有其他方法可以在“配置”方法中获取AppSettings的实例?我需要键入的对象。

您可以使用服务定位器以如下方式获取它:

IOptions<AppSettings> settings = app.ApplicationServices.GetService<IOptions<AppSettings>>();
if (settings.Options.whatever)
  {
     ...
  }
IOptions settings=app.ApplicationServices.GetService();
如果(设置、选项、任意)
{
...
}

我注意到,如果您使用VS 2015的最终版本创建一个新项目,那么项目模板不会像以前的项目模板那样包含AppSettings,不知道为什么。

ConfigureServices
中配置的每个服务都可以通过运行时注入
Configure
方法:

public void Configure(IApplicationBuilder app, IOptions<AppSettings> options)
{
    // access options.Options here
}
public void配置(IApplicationBuilder应用程序,IOptions选项)
{
//访问选项。选项在这里
}
这是一个比直接访问
服务提供商
更干净的解决方案