首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >读取ASP.NET核心中的环境变量

读取ASP.NET核心中的环境变量
EN

Stack Overflow用户
提问于 2016-05-23 17:23:55
回答 3查看 115.2K关注 0票数 91

使用DNX运行我的ASP.NET核心应用程序时,我能够从命令行设置环境变量,然后像这样运行它:

代码语言:javascript
复制
set ASPNET_ENV = Production
dnx web

在1.0中使用相同的方法:

代码语言:javascript
复制
set ASPNETCORE_ENVIRONMENT = Production
dotnet run

不工作-应用程序似乎无法读取环境变量。

代码语言:javascript
复制
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));

返回null

我遗漏了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-23 17:40:31

您的问题是=周围的空格。

这将会起作用(在结束引用之前注意空格):

代码语言:javascript
复制
Console.WriteLine(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT "));

这段代码中ASPNETCORE_ENVIRONMENT后面的空格不是拼写错误!问题中的问题是有额外的空间(在SET...中),所以您必须在GetEnvironmentVariable()中使用相同的空间。

正如Isantipov in a comment所指出的,更好的解决方案是从SET命令中完全删除空格:

代码语言:javascript
复制
set ASPNETCORE_ENVIRONMENT=Production
票数 148
EN

Stack Overflow用户

发布于 2017-12-19 18:23:49

这真的应该是@Dmitrythis answer的评论(但它太长了,所以我把它作为一个单独的答案发布):

你不会想要使用'ASPNETCORE_ENVIRONMENT ' (带有尾随空格)-- ASP.NET核心中有一些特性依赖于'ASPNETCORE_ENVIRONMENT'的值(没有尾随空格)--例如,appsettings.Development.jsonappsettings.Production.json的解析。(例如,请参阅Working with multiple environments documentation article

我还猜测,如果您想纯粹停留在ASP.NET核心范例中,您可能希望使用IHostingEnvironment.Environment(请参阅documentation)属性,而不是直接从Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")读取(尽管前者当然是从后者设置的)。例如在Startup.cs中

代码语言:javascript
复制
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);
        //<...>
    }

    //<...>
}
票数 22
EN

Stack Overflow用户

发布于 2022-01-27 23:44:14

如果在开发过程中在运行时创建环境变量,那么每次都会得到null。您必须重新启动visual studio,因为VS仅在启动时读取EV。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37387235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档