2015-07-21 62 views
1

asp.net MVC 6 beta5的如何使用ConfigurationBinder在startup.cs

我试图使用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) 
      { 
       ................ 
     } 

实施例从ASP.NET 5 (vNext) - Getting a Configuration Settinghttp://perezgb.com/2015/07/04/aspnet-5-typed-settings-with-the-configurationbinder/
是否有另一种方法来获取“配置”方法中的AppSettings的实例?我需要打字对象。

回答

3

ConfigureServices配置每个服务可以在Configure方法由运行时被注入:

public void Configure(IApplicationBuilder app, IOptions<AppSettings> options) 
{ 
    // access options.Options here 
} 

这比直接访问ServiceProvider有点清洁的解决方案。

5

你可以得到它这样使用的服务定位:

IOptions<AppSettings> settings = app.ApplicationServices.GetService<IOptions<AppSettings>>(); 
if (settings.Options.whatever) 
    { 
    ... 
    } 

我注意到,如果你创建一个新的项目,2015年VS的最终版本的项目模板不包括的AppSettings作为以前的项目模板做了,不知道为什么。

+0

它的工作原理,谢谢乔。 – SrdTLT

相关问题