我已经将ASP.NET Web应用程序部署到我们用于UAT的测试服务器上。我使用以下Powershell命令将ASP.NET核心环境名称设置为“UAT”...
$Env:ASPNETCORE_ENVIRONMENT = "UAT"
...并使用...
确认此设置Get-ChildItem Env:
但是,当我运行应用程序时,我可以在Startup
中看到IHostingEnvironment.EnvironmentName
属性返回“生产”。为什么会这样?
答案 0 :(得分:2)
由于您将整个服务器用于UAT,因此在机器级别设置该环境变量是有意义的。您当前的powershell命令仅将其设置为当前进程,因此仅当您从同一个PowerShell控制台运行应用程序时它才会起作用(并且在关闭它时会丢失)。您可以在机器级别设置它,例如使用此powershell命令(您需要在管理员下运行控制台,以使其工作):
[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "UAT", "Machine")
您可以将其设置为任何值,而不是像“生产”,“暂存”,“开发”这样的“预定义”值。
请注意,所有用户\机器级环境变量更改仅对新进程生效,而不会为现有进程更改它们。因此,如果您在IIS下运行Web应用程序 - 您需要重新启动IIS才能使其生效。如果从cmd \ powershell控制台运行它 - 您需要重新启动控制台,依此类推。
答案 1 :(得分:1)
'Staging'
是许多公司UAT
的同义词,有时pre-prod
使用staging
What is difference between testing environment and staging?
来自cmd或PowerShell 你可以用这个:
>setx ASPNETCORE_ENVIRONMENT "staging" /M
//确保收到此消息
SUCCESS: Specified value was saved.
或仅来自Powershell
$Env:ASPNETCORE_ENVIRONMENT = "staging"
并按以下方式运行
dotnet run --environment "Staging"
如果您想检查它,请使用以下
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsStaging())
更新,事实上,您可以自定义您的环境变量并检查它,如下所示
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsEnvironment("UAT")