如何在startup.cs的Configure方法中使用ConfigurationBinder
How to use ConfigurationBinder in Configure method of startup.cs
asp.net mvc 6 beta5
我尝试使用 config.json 来 activate\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)
{
................
}
示例来自 and http://perezgb.com/2015/07/04/aspnet-5-typed-settings-with-the-configurationbinder/
是否有另一种方法可以在 "configure" 方法中获取 AppSettings 的实例?我需要键入的对象。
您可以使用服务定位器这样获取它:
IOptions<AppSettings> settings = app.ApplicationServices.GetService<IOptions<AppSettings>>();
if (settings.Options.whatever)
{
...
}
我注意到如果您使用 VS 2015 的最终版本创建一个新项目,项目模板不会像以前的项目模板那样包含 AppSettings,不知道为什么。
ConfigureServices
中配置的每个服务都可以由运行时注入 Configure
方法:
public void Configure(IApplicationBuilder app, IOptions<AppSettings> options)
{
// access options.Options here
}
这个解决方案比直接访问 ServiceProvider
更简洁。
asp.net mvc 6 beta5
我尝试使用 config.json 来 activate\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)
{
................
}
示例来自
是否有另一种方法可以在 "configure" 方法中获取 AppSettings 的实例?我需要键入的对象。
您可以使用服务定位器这样获取它:
IOptions<AppSettings> settings = app.ApplicationServices.GetService<IOptions<AppSettings>>();
if (settings.Options.whatever)
{
...
}
我注意到如果您使用 VS 2015 的最终版本创建一个新项目,项目模板不会像以前的项目模板那样包含 AppSettings,不知道为什么。
ConfigureServices
中配置的每个服务都可以由运行时注入 Configure
方法:
public void Configure(IApplicationBuilder app, IOptions<AppSettings> options)
{
// access options.Options here
}
这个解决方案比直接访问 ServiceProvider
更简洁。