ASP.NETアプリケーションで実行される環境を知るための推奨される方法は何ですか?私のアプリケーションは、これらの環境で実行することができます。ASP.NETアプリケーションの環境を設定する方法は?
- デバッグのVisual Studio内
- 自動システムテストのそれぞれにおいて ステージングサーバー上の
- 展開 本番サーバー上の
- 展開
これらの環境では、アプリケーションはいくつかの異なる構成を必要とします。環境の主な違いは、使用するデータベース接続の設定ですが、他にも違いがあります。私はVisual Studioで、「設定」オプションを使用してみましたが
- :
は、これは私がしようとしているものです。デフォルトでは、リリースとデバッグの2つがあります。私はこれらの2つを4つの環境の識別子に置き換えようとしました。これらの構成を使用して、Web.configファイルにトランスフォームを適用できます。ここで問題となるのは、ビルド時に構成を選択することです。アプリケーションをコンパイルしてから、Webサーバーで実行する前に環境を選択したいと考えています。 Visual Studio内でデバッグするときにWeb.config変換も行われないため、デバッグ環境で実行されていることをアプリケーションに伝えるのではなく、環境を取得しません。私はUse Visual Studio web.config transform for debuggingで回避策を見つけましたが、うまく機能していないようです。私は、プロジェクトプロパティの設定を変更する必要があります。これは遅い処理です。
- 私は環境変数を使用しようとしました。このようにして、変数MYAPP_ENV = devをアプリケーション外から設定することができ、C#で読み取ることができました。
string env = System.Environment.GetEnvironmentVariable( "MYAPP_ENV");
しかし、この環境変数をVisual StudioやIIS内から設定する方法がわかりません。同じマシンで複数の環境でアプリケーションを実行できる必要があるため、マシン上でグローバルに設定することはできません。
ASP.NETでこれを行うにはどうすればよいでしょうか? Ruby on RailsではRAILS_ENV環境変数を使用し、PHPではリポジトリにチェックインされていないファイルをインクルードし、バージョン管理システムの無視リストに追加します。
のConfigurationManagerクラスを経由して、これらの値にアクセスすることができますが、私は使用を控えるしようと
:<のappSettings >ノードでは、キーを追加することができますあなたのサイトが異なる環境で異なる動作をするため、環境固有のコード(if 'env ==" dev "{} else {})を記述してください。変更が必要な値は設定ファイルで変更する必要があります(AaronSの回答を参照)。 – Jeff