使用DNX运行我的ASP.NET核心应用程序时,我能够从命令行设置环境变量,然后像这样运行它:
set ASPNET_ENV = Production
dnx web
在1.0中使用相同的方法:
set ASPNETCORE_ENVIRONMENT = Production
dotnet run
不工作-应用程序似乎无法读取环境变量。
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));
返回null
我遗漏了什么?
发布于 2016-05-23 17:40:31
您的问题是=
周围的空格。
这将会起作用(在结束引用之前注意空格):
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT "));
这段代码中ASPNETCORE_ENVIRONMENT
后面的空格不是拼写错误!问题中的问题是有额外的空间(在SET...中),所以您必须在GetEnvironmentVariable()中使用相同的空间。
正如Isantipov in a comment所指出的,更好的解决方案是从SET命令中完全删除空格:
set ASPNETCORE_ENVIRONMENT=Production
发布于 2017-12-19 18:23:49
这真的应该是@Dmitry对this answer的评论(但它太长了,所以我把它作为一个单独的答案发布):
你不会想要使用'ASPNETCORE_ENVIRONMENT '
(带有尾随空格)-- ASP.NET核心中有一些特性依赖于'ASPNETCORE_ENVIRONMENT'
的值(没有尾随空格)--例如,appsettings.Development.json
与appsettings.Production.json
的解析。(例如,请参阅Working with multiple environments documentation article
我还猜测,如果您想纯粹停留在ASP.NET核心范例中,您可能希望使用IHostingEnvironment.Environment
(请参阅documentation)属性,而不是直接从Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
读取(尽管前者当然是从后者设置的)。例如在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);
//<...>
}
//<...>
}
发布于 2022-01-27 23:44:14
如果在开发过程中在运行时创建环境变量,那么每次都会得到null。您必须重新启动visual studio,因为VS仅在启动时读取EV。
https://stackoverflow.com/questions/37387235
复制相似问题