如果您调整处理其配置的方式,则不必使用环境变量。WebHostBuilder
这只是dotnet new -t web
. 例如,如果您希望能够将默认环境设置为“开发”而不是生产环境并便于在命令行中覆盖环境,您可以通过修改正常Program.cs
代码来实现...
public static void Main(string[] args) {
var host = new WebHostBuilder()
.UseKestrel()
.UseUrls("http://0.0.0.0:5000")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
……变成这样……
private static readonly Dictionary<string, string> defaults =
new Dictionary<string, string> {
{ WebHostDefaults.EnvironmentKey, "development" }
};
public static void Main(string[] args) {
var configuration =
new ConfigurationBuilder()
.AddInMemoryCollection(defaults)
.AddEnvironmentVariables("ASPNETCORE_")
.AddCommandLine(args)
.Build();
var host =
new WebHostBuilder()
.UseConfiguration(configuration)
.UseKestrel()
.UseUrls("http://0.0.0.0:5000")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
这样做,环境变量仍然可以工作,但您可以在命令行上覆盖它而无需任何第三方依赖项,如下所示:
dotnet run environment=development
dotnet run environment=staging
这实际上是yeoman 生成器所做的。