ASP.NET Core references a particular environment variable, ASPNETCORE_ENVIRONMENT
to describe the environment the application is currently running in. This variable can be set to any value you like, but 3 values are used by convention: Development
, Staging
, and Production
.
Based on this information the ASP.NET Core configuration system can load specific configuration settings (through .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) )
or execute a specific Startup class or Startup method through the Startup conventions(e.g. a Startup{EnvironmentName} class or a Configure{EnvironmentName}() method inside the Startup class).
At one customer we are hosting our ASP.NET Core applications inside IIS. The IIS environment is used both for development and testing. So we want to host the same application twice with a different environment setting. By default the environment setting is loaded from a system level environment variable which of course can be set to only one value.
How can we solve this?
To support this scenario the ASP.NET Core Module inside your web.config allows you specify environment variables for the process specified in the processPath
attribute by specifying them in one or more environmentVariable
child elements of an environmentVariables
collection element under the aspNetCore
element. Environment variables set in this section take precedence over system environment variables for the process.
An example: