2017-07-31 6 views
0

これは本当に本当に奇妙なものです。 IISのサーバー変数ASPNETCORE_ENVIRONMENTを変更すると、時にはがアプリケーションを壊します。一度展開された環境変数分割サイト

すべては、ローカルのマシン、プロダクション、デモ環境でうまく動作します。私はものをテストすることができる追加の開発環境を追加したいと思っていましたが、実際に私たちのサーバー上にあるのとビジュアルスタジオでデバッグすることがあります。

私はStartup.csのように構成されています。 appsettings.jsonはそれに応じて設定されているマイ

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"]; 
} 

。この正確な構成では、以外のDeployDevを使用しています(ローカルマシン以外の環境はすべて、Windows Server 2008 R2のクローンであるIIS 7.5です)。

私はDeployDevに乗るエラーは次のセクションが定義されているが、レイアウトページ「〜/ビュー/共有/ _Layout.cshtml」

奇妙な権利のためにレンダリングされていないのですか?ここに配置されたプロセスを使用してDeployDevと呼ばれるDeployDevに環境変数を追加する以外の環境間でコード/サーバーの設定変更はありません。 https://stackoverflow.com/a/36836533/1729859(私はデモのために全く同じことをやったし、それはうまくいく)。

私はDeployDevインスタンスの環境変数を何か他のものに変更しようと考えました。私はそれをStagingに変更し、else if (Environment.EnvironmentName.ToLower() == "Staging")を探すように自分のコードを更新しましたが、それ以外は同じものを残しました。私の驚きには、すべてが完璧に動作するようになった。

要約すると、コードの変更や環境の変更は行わず、環境変数をDeployDevからStagingに変更しただけですべて動作します。 WEIRD !!誰もこれを見たことがありますか?私はgithubの.netコアチームにこれを送ってもらえますか?

+0

: あなたはそうあなたが"DeployDev".ToLower() equavalentで環境名を比較する必要がありToLower()を使用しますセクションとあなたの_Layout.cshtmlを共有しますか? – Set

+0

私は可能ですが、アプリケーション全体が3/4環境で完璧に動作しているので違いはありません。 – mituw16

+0

申し訳ありませんが、今は再現できないほど話題に似ていますあなたの問題と今は 'DeployDev' envのために実行されないコードがいくつかあるようです。提供されたコードでは、唯一の違いは 'options.IsDev = true;'ですが、それはProductionでうまく動作すると言います。 – Set

答えて

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

これは問題です。 `以下のセクションでは、`「共有/ _Layout.cshtml /〜/ビュー」可能性が定義されていますが、レイアウト・ページ用にレンダリングされていない

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

それは良いキャッチですが、私の問題を解決するようには見えません。私はあなたが示唆したようにコードを変更しましたが、依然として元のエラーが発生します。 – mituw16

関連する問題