How can we store configuration data in new asp.net vnext?

后端 未结 3 1859
面向向阳花
面向向阳花 2021-01-05 07:15

How can we store configuration data in new asp.net vnext? web.config still there(system.web removed, so no any web.config,but I like it) or using new json file for configura

3条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-05 07:52

    Configuration used best is a starting point to strongly typed options. So what you want to do in startup is register an Options object, set it up with data you read from configuration, and get it from the DI system in the rest of your code.

    Example:

    Create an Options object

    public class ApplicationOptions
    {
        public bool MyOption { get; set; }
    }
    

    Read the configuration and setup the options object then register it in DI

    public void Configure(IApplicationBuilder app)
    {         
        // rest of setup
    
        var applicationOptions = new ApplicationOptions();
        string myOption;
        if (configuration.TryGet("MyOption", out myOption) &&
                myOption.Equals("True", StringComparison.OrdinalIgnoreCase))
        {
            applicationOptions.MyOption = true;
        }
    
        // For the scenario above also the code below will work.
        // It is currently limited to desktop (ASPNET50, NET45) only.
        // services.Configure(configuration);
    
        services.AddInstance(applicationOptions);
    
        // more setup
    }
    

    And resolve it in your code

    public class MyController : Controller
    {
        public IActionResult Index(ApplicationOptions options)
        {
            // do something with the options
        }
    }
    

    Edit: with any practical reusable options object, the code setting it up will probably happen outside the startup class.

提交回复
热议问题