2017-03-17 38 views
1

我有asp.net核心應用程序。我有Options存儲在appsettings.json文件中。我在Options上註冊了服務,然後嘗試在Configure方法中解決它。ServiceProvider無法解析配置方法中的選項

但是,服務提供者無法解析Configure方法中的選項。

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
     services.Configure<HstsOptions>(Configuration.GetSection("HstsOptions")); 
    } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime,IServiceProvider services) 
    { 

      var options = services.GetService<HstsOptions>(); 
      // service provider cannot resolve options here, it returns null 
      app.UseHsts(options); 
    } 

} 

回答

1

你可以改變配置的方法簽名,並注入之前註冊的進入方法這樣的事:

public void Configure(
    IApplicationBuilder app, 
    IHostingEnvironment env, 
    ILoggerFactory loggerFactory, 
    IApplicationLifetime appLifetime, 
    IOptions<HstsOptions> hstsOptions) 
{ 
     app.UseHsts(hstsOptions.Value); 
} 

注意,當您使用services.Configure你真的註冊的事情的IOptions你正在註冊,並獲得你使用該值的.Value屬性的東西