これは本当に本当に奇妙なものです。 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コアチームにこれを送ってもらえますか?
: あなたはそうあなたが
"DeployDev".ToLower()
equavalentで環境名を比較する必要がありToLower()
を使用しますセクションとあなたの_Layout.cshtmlを共有しますか? – Set私は可能ですが、アプリケーション全体が3/4環境で完璧に動作しているので違いはありません。 – mituw16
申し訳ありませんが、今は再現できないほど話題に似ていますあなたの問題と今は 'DeployDev' envのために実行されないコードがいくつかあるようです。提供されたコードでは、唯一の違いは 'options.IsDev = true;'ですが、それはProductionでうまく動作すると言います。 – Set