Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

asp.net-core

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 configuration data.

like image 458
Haneesh H Avatar asked Jan 30 '15 08:01

Haneesh H


2 Answers

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<ApplicationOptions>(configuration);

    services.AddInstance<ApplicationOptions>(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.

like image 62
Yishai Galatzer Avatar answered Dec 08 '22 00:12

Yishai Galatzer


In the breaking changes (beta 6), Microsoft.Framework.ConfigurationModel assembly name changed to Microsoft.Framework.Configuration This is the modified startup class

 public IConfiguration Configuration { get; set; }

public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{
     var configurationBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath).
        .AddJsonFile("config.json")
        .AddEnvironmentVariables();
     Configuration = configurationBuilder.Build();
}
like image 30
Karthick Avatar answered Dec 07 '22 23:12

Karthick