39-在控制器中使用配置

在控制器中访问应用程序的配置或者设置配置可能是经常需要这样的。

下面我们添加一个网站配置

添加一个类WebSettings

namespace FirstCoreMVC.Core
{
    public class WebSettings
    {
        public string Name { set; get; }
        public string Site { set; get; }
    }
}Code language: JavaScript (javascript)

在Startup中添加到服务集合中

public IConfigurationRoot Configuration { set; get; }

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile("mysettings.json", optional: true, reloadOnChange: true);
    Configuration = builder.Build();
}Code language: JavaScript (javascript)

添加配置类

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(
        options => {
            options.Filters.Add(typeof(TestActionFilter));//添加了一个全局过滤i其
        }
    );

    //services.AddTransient<LogHelperService>();
    services.AddTransient<ILogHelperService, LogHelperService>();

    //添加配置类
    services.AddOptions();
    services.Configure<WebSettings>(Configuration.GetSection("WebSettings"));
    services.Configure<MySettings>(Configuration.GetSection("MySettings"));Code language: JavaScript (javascript)

在跟目录下面添加一个

mysettings.json内容为

{
  "MySettings": {
    "Name": "CusSetting",
    "Site": "Male"
  }
}Code language: JSON / JSON with Comments (json)

在appsettings.json中增加

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "WebSettings": {
    "Name": "FoxDevelop",
    "Site": "www.FoxDevelop.COM"
  }
}Code language: JSON / JSON with Comments (json)

通过依赖注入的方式使用

private WebSettings webOptions;

public HomeController(ILogHelperService logHelperService,IOptions<WebSettings> webOptions, IOptions<MySettings> myOptions)
{
    this.webOptions = webOptions.Value;

    this.logHelperService = logHelperService;//存储起来
    logHelperService.Add();//可以之间使用

}Code language: JavaScript (javascript)

在Action中调用

public IActionResult TestMyConfig([FromServices]  IOptions<MySettings> myOptions )
{
    return Content(myOptions.Value.Name);
}Code language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注