部署后的环境变量中断站点

时间:2017-07-31 16:36:35

标签: asp.net-core iis-7.5

这真的很奇怪。如果我对IIS中的ASPNETCORE_ENVIRONMENT服务器变量进行了更改,则有时会破坏我的应用程序。

在我的本地机器,生产和演示环境中,一切都很好用。我想添加一个额外的开发环境,在那里我可以测试一些东西,但它实际上是在我们的服务器上而不是在visual studio中进行调试。

我的Startup.cs配置如此。

if (Environment.IsDevelopment())
{
     options.ConnectionString = Configuration["Data:DevConnection:ConnectionString"];
     options.BaseUrl = Configuration["EnvironmentUrl:Dev:Url"];
     options.IsDev = true;
}
else if (Environment.EnvironmentName.ToLower() == "demo")
{
     options.ConnectionString = Configuration["Data:Demo:ConnectionString"];
     options.BaseUrl = Configuration["EnvironmentUrl:Demo:Url"];
}
else if (Environment.EnvironmentName.ToLower() == "deploydev")
{
     options.ConnectionString = Configuration["Data:DeployDevConnection:ConnectionString"];
     options.BaseUrl = Configuration["EnvironmentUrl:DeployDev:Url"];
}
else
{
     options.ConnectionString = Configuration["Data:ProdConnection:ConnectionString"];
     options.BaseUrl = Configuration["EnvironmentUrl:Prod:Url"];
 }

我的appsettings.json已相应设置。在这个确切的配置中,所有不同的环境都可以工作,除了 DeployDev ..(除了本地计算机之外的所有环境都是Windows Server 2008R2上的IIS 7.5,它们是克隆的彼此)。

我在DeployDev上遇到的错误是以下部分已定义,但尚未针对布局页面“〜/ Views / Shared / _Layout.cshtml”

奇怪吧?除了使用此处列出的流程在名为DeployDev的DeployDev上添加环境变量之外,在任何环境之间都没有代码/服务器配置更改。 https://stackoverflow.com/a/36836533/1729859(我为演示做了完全相同的事情,它工作正常)。

因此继续沿着rabitt洞和许多头部划痕,我想到尝试将我的DeployDev实例上的环境变量更改为其他内容。我将其更改为Staging并更新了我的代码以查找else if (Environment.EnvironmentName.ToLower() == "Staging"),但其他所有内容都保持不变。令我惊讶的是,一切都开始完美。

所以回顾一下,我没有进行任何代码更改/环境更改,只将环境变量从DeployDev更改为Staging并且瞧,一切正常。奇怪的!!谁看过这个吗?我应该把这个发送到github上的.net核心团队吗?

1 个答案:

答案 0 :(得分:0)

else if (Environment.EnvironmentName.ToLower() == "DeployDev")

这是你的问题。  您使用ToLower(),因此您应将环境名称与等效的"DeployDev".ToLower()进行比较:

else if (Environment.EnvironmentName.ToLower() == "deploydev")