After RC2
So what is the way to set a different EnvironmentName?
Set the ASPNETCORE_ENVIRONMENT
environmental variable.
There are many ways to set that environmental variable. These include a launchSettings.json
profile and other environment-specific ways. Here are some examples.
From a console:
// PowerShell
> $env:ASPNETCORE_ENVIRONMENT="Development"
// Windows Command Line
> SET ASPNETCORE_ENVIRONMENT=Development
// Bash
> ASPNETCORE_ENVIRONMENT=Development
From an Azure Web App's App settings:
Before RC2
I can imagine that it should be set in "Commands" as a parameter for server.
That is true. In your project.json, add --ASPNET_ENV production
as a parameter for the server.
"commands": {
"web": "Microsoft.AspNet.Hosting --ASPNET_ENV production --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001"
}
Now when you run dnx . web
from the command line, ASPNET_ENV
will be production
.
Relevant ASP.NET Core Hosting Source Code
The WebHostBuilder
combines "ASPNETCORE_"
with the WebHostDefaults.EnvironmentKey
to make "ASPNETCORE_environment"
. It also supports the legacy keys.
WebHostDefaults.cs
namespace Microsoft.AspNetCore.Hosting
{
public static class WebHostDefaults
{
public static readonly string ApplicationKey = "applicationName";
public static readonly string StartupAssemblyKey = "startupAssembly";
public static readonly string DetailedErrorsKey = "detailedErrors";
public static readonly string EnvironmentKey = "environment";
public static readonly string WebRootKey = "webroot";
public static readonly string CaptureStartupErrorsKey = "captureStartupErrors";
public static readonly string ServerUrlsKey = "urls";
public static readonly string ContentRootKey = "contentRoot";
}
}
WebHostBuilder.cs
_config = new ConfigurationBuilder()
.AddEnvironmentVariables(prefix: "ASPNETCORE_")
.Build();
if (string.IsNullOrEmpty(GetSetting(WebHostDefaults.EnvironmentKey)))
{
// Try adding legacy environment keys, never remove these.
UseSetting(WebHostDefaults.EnvironmentKey,
Environment.GetEnvironmentVariable("Hosting:Environment")
?? Environment.GetEnvironmentVariable("ASPNET_ENV"));
}
Backward Compatibility
The environment key is set with the ASPNETCORE_ENVIRONMENT
environment variable. ASPNET_ENV
and Hosting:Environment
are still supported, but generate a deprecated message warning.
https://docs.asp.net/en/latest/migration/rc1-to-rtm.html
Default Value
The default value is "Production" and is set here.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…