C# 如何在startup.cs的配置方法中使用ConfigurationBinder
asp.net mvc 6 beta5 我已尝试使用config.json激活\disactive日志记录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
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选项)
{
//访问选项。选项在这里
}
这是一个比直接访问服务提供商
更干净的解决方案