2015-07-21 28 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

相關問題