这真的很奇怪。如果我对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核心团队吗?
答案 0 :(得分:0)
else if (Environment.EnvironmentName.ToLower() == "DeployDev")
这是你的问题。
您使用ToLower()
,因此您应将环境名称与等效的"DeployDev".ToLower()
进行比较:
else if (Environment.EnvironmentName.ToLower() == "deploydev")