如何在生产环境中设置 ASP.NET 5 环境变量

Posted

技术标签:

【中文标题】如何在生产环境中设置 ASP.NET 5 环境变量【英文标题】:How to set ASP.NET 5 environment variables on production environment 【发布时间】:2015-08-30 22:39:33 【问题描述】:

在 Visual Studio 2015 中,您在项目属性中设置以下变量:ASPNET_ENV。如果将其设置为开发,则可以使用:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

    if (env.IsDevelopment())
    
        app.UseErrorPage();
    
 

IsDevelopment 方法将检查 ASPNET_ENV 环境变量。现在,当您在 Visual Studio 2015 中进行开发时,这一切都很好。当您将 Web 应用程序发布到生产服务器上的 IIS 时,如何设置 ASPNET_ENV 的值?

我的服务器是 Windows Server 2012

【问题讨论】:

Asp.net 5 publish to IIS, setting ASPNET_ENV Variables 的可能重复项 看一下:docs.asp.net/en/latest/fundamentals/environments.html -- 特别要注意提示需要重启web服务器才能使该区域的更改生效。 @Amit 这不是因为他们给出的答案没有意义 @DavidTansey 文档中没有提到如何做到这一点?在哪里设置变量? 【参考方案1】:

这是在Windows上设置环境变量的方法:

    在您的服务器上,右键单击“计算机”或“我的电脑”,然后单击“属性”。 转到“高级系统设置”。 点击“高级”选项卡中的“环境变量”。 添加名称为ASPNET_ENV (RC1) 或ASPNETCORE_ENVIRONMENT(RC2、RTM 及以上)的新系统变量,其值为ProductionStagingDevelopment 或任何您想要的值。李> 可能需要重新启动您的网站。

有关如何从 gulpfile.js 读取环境变量,另请参阅 this 答案。

【讨论】:

从 RC1 开始,环境变量已更改为 Hosting:Environment。 @GradyWerner 见github.com/aspnet/Docs/issues/706#issuecomment-160450913 重新启动以放置新的系统环境变量??这是真的吗? @DonDon 我的意思是重新启动网站。我没有测试过。我已经更新了答案以澄清。 必须重新启动机器才能使更改生效。【参考方案2】:

如果您使用 IIS 来托管您的应用程序,可以像这样在 web.configfile 中设置环境变量:

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
    <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="QA" />
        <environmentVariable name="AnotherVariable" value="My Value" />
    </environmentVariables>
</aspNetCore>

【讨论】:

请更正markdown中的缩进,以便将结束标记(&lt;/aspNetCore&gt;)作为代码包含在内,并且environmentVariables小节很好地缩进。我会自己完成,但它不能算作允许编辑的足够字符。

以上是关于如何在生产环境中设置 ASP.NET 5 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net c# 渲染覆盖中设置全局变量?

Nuxt 如何在开发或生产环境中设置 baseURL

如何在 ASP.NET 5 Identity 中设置 PasswordHasherCompatibilityMode.IdentityV3?

用于替换 ASP.net MVC 中的连接字符串的 aws 环境变量

如何在生产和开发环境中始终如一地获得 ASP.NET 5 DNX 项目的应用程序基础路径?

即使在 webpack.DefinePlugin 中设置了环境变量,也没有在电子中定义