.NET Tips and Tricks

Blog archive

Using the Right Settings File in ASP.NET Core

In ASP.NET Core, the appsettings.json file gives you a place to store your application's configuration settings. You can have multiple versions of your appsettings file, one for each of your environments (test, production, etc.). The various files are identified by including the environment name in the file name, like this:

  • appsettings.development.json
  • appsettings.staging.json
  • appsettings.production.json

The tools I described in that earlier article for retrieving settings from appsettings will automatically pick the version of appsettings passed based on the value in the ASPNETCORE_ENVIRONMENT global variable. You can set that variable to any value you want, but three settings are supported out of the box: Testing, Staging and Production (the default is "Production").

The easiest way to check that setting is by retrieving the IHostingEnvironment object and checking the object's IsDevelopment, IsProduction and IsStaging properties. As an example, the default code in the Startup class's Configure method accepts the IHostingEnvironment object and uses those properties like this:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
   if (env.IsDevelopment())

You'll most likely control ASPNETCORE_ENVIRONMENT through the launchsettings.json file. If that file exists, ASP.NET Core scans the file's profiles entry looking for an entry with a commandName property that matches how the application was started. An entry like the following in launchsettings will, when the application is launched in IIS Express, set ASPNETCORE_ENVIRONMENT to "Staging" and, as a result, your tools will read the appsettings.staging.json file:

"profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {

I wouldn't try to edit the file yourself. Instead, open your project's Properties and pick the Debug tab. The form for that tab will let you manage the profiles in the launchsettings.json file without having to edit the json file yourself.

Posted by Peter Vogel on 03/22/2019 at 9:04 AM


  • Purple Nebula Graphic

    Open Source Uno Platform Takes Xamarin.Forms Mobile Apps to the Web via WebAssembly

    The open source Uno Platform announced new integration with Xamarin.Forms that lets developers take existing XF mobile apps to the Web, using WebAssembly.

  • Swirl

    Blazor WebAssembly Not Ready for .NET Core 3.0 Prime Time

    The much-anticipated .NET Core 3.0 milestone release is shipping in five days, Sept. 23, but it won't include a stable Blazor WebAssembly.

  • Visual Studio 2019 16.3 Preview Adds .NET Core Database Profiling

    Microsoft shipped Visual Studio 2019 16.3 Preview 4, adding database profiling for projects based on .NET Core, which is coming out in a big v3.0 milestone release next week.

.NET Insight

Sign up for our newsletter.

Terms and Privacy Policy consent

I agree to this site's Privacy Policy.

Upcoming Events