2012-01-05 20 views
1

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ではリポジトリにチェックインされていないファイルをインクルードし、バージョン管理システムの無視リストに追加します。

+0

のConfigurationManagerクラスを経由して、これらの値にアクセスすることができますが、私は使用を控えるしようと

<appSettings> <add key="Environment" value="DEV" /> </appSettings> 

:<のappSettings >ノードでは、キーを追加することができますあなたのサイトが異なる環境で異なる動作をするため、環境固有のコード(if 'env ==" dev "{} else {})を記述してください。変更が必要な値は設定ファイルで変更する必要があります(AaronSの回答を参照)。 – Jeff

答えて

3

あなたの環境ごとに個別のweb.configファイルがあります。

また、外部の設定ファイルを追加することで、PHPのインクルードファイルと同様の設定を行うこともできます。

web.configに次の行を追加するだけです。

次に、残りの設定情報を含むMySettings.configという新しいファイルを追加します。

+0

+1。別のweb.configsを維持するために、私は[config transforms](http: /msdn.microsoft.com/en-us/library/dd465318.aspx)をVisual Studioで実行します。 – Keith

+0

AronS:これは興味深いと思います。デバッグ(F5)を開始するときにアプリケーションを実行する前に、MySettings.configファイルに1つの値を自動的に入れるようにVisual Studioを設定するにはどうすればよいですか?そして、このMySettings.configファイルは、実稼働環境でIISにデプロイすると、アプリケーションのDLLの隣で利用できますか? Keith:私が最初に書いたように、トランスフォームはビルドプロセスの一部としてしか作成できないように見えますが、効果的に機能しないような複雑な問題もあります。 –

+0

あなたのやることは、あなたのPHP版の設定方法に似ています。このファイルを各環境に置いて、展開ツールで無視するようにしてください。 私の実際に行っているのは、各環境(web.config.QA、web.config.Prodなど)に名前を変更したサブフォルダ内に、複数のバージョンのweb.configを持つことです。私のビルドとデプロイメントプロセスは、ビルドの実行に基づいて正しいものを選択し、web.configに名前を変更し、サイトがデプロイされるときにルートのものに置き換えます。これは私にとって本当にうまくいっています。 – AaronS

1

web.configファイルは環境設定に使用されます。ビジュアルスタジオの設定が面倒すぎると感じる場合は、ファイルをバージョン管理から外して、各環境で編集するだけです。そして、あなたはこれをやっている場合、それは明らかではありません

var currentEnvironment = ConfigurationManager.AppSettings["Environment"].ToString(); 
+0

バージョン管理の外にweb.config全体を持っているか、ファイル内になければならないものがたくさんあるので実際の環境ではないので、環境ごとに1つのバージョンを持つことはあまり意味がありませんまたは構成に関連する。 –

関連する問題