sev*_*rin 51 asp.net asp.net-core-mvc kestrel-http-server asp.net-core
使用dnx运行我的ASP.NET核心应用程序我能够从命令行设置环境变量,然后像这样运行它:
set ASPNET_ENV = Production
dnx web
Run Code Online (Sandbox Code Playgroud)
在1.0中使用相同的方法:
set ASPNETCORE_ENVIRONMENT = Production
dotnet run
Run Code Online (Sandbox Code Playgroud)
不起作用 - 该应用程序似乎无法读取环境变量.
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));
Run Code Online (Sandbox Code Playgroud)
返回null
我错过了什么?
Dmi*_*try 97
你的问题是周围的空间=.
这将有效:
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT "));
Run Code Online (Sandbox Code Playgroud)
或删除空格:
set ASPNETCORE_ENVIRONMENT=Production
Run Code Online (Sandbox Code Playgroud)
Isa*_*pov 12
这应该是@Dmitry对这个答案的评论(但是太长了,因此我将其作为一个单独的答案发布):
你不会想用'ASPNETCORE_ENVIRONMENT '(后面有个空格) -有在ASPNET核心功能依赖于价值'ASPNETCORE_ENVIRONMENT'(无空格) -如解决的appsettings.Development.jsonVS appsettings.Production.json.(例如,请参阅使用多个环境文档文章
Ans我也猜想如果你想纯粹保持在aspnet核心范式内,你会想要使用IHostingEnvironment.Environment(参见docs)属性而不是Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")直接阅读(虽然fromer当然是从后者设置的).例如在Startup.cs中
public class Startup
{
//<...>
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
Console.WriteLine("HostingEnvironmentName: '{0}'", env.EnvironmentName);
//<...>
}
//<...>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62893 次 |
| 最近记录: |