2011-09-16 2 views
0

私は展開しているASP.NET Webアプリケーションを持っており、起動時にどの環境を指すべきかを管理するための最良の方法を理解し、オプションを見落とさないようにしています。実行中のasp.net Webアプリケーションをリモートで設定する最善の方法は何ですか?

まず少し背景。

アプリケーションは、継続ビルドによって生成された成果物を使用して、ビルドサーバーから自動的にWebデプロイされます。

/Config/Environments/Development.xml 
/Config/Environments/UAT.xml 
/Config/Environments/Production.xml 

質問は、それがすべき環境設定ファイルを開始すると、アプリケーションに指示するための最良の方法だ何を、次のとおりです。展開パッケージを使用すると、このようなものになってしまうので、使用可能なすべての環境の構成設定が含まれています負荷?

可能であれば、実行中のアプリケーションの現在の環境を変更できるようにしたいのですが、必要に応じていつでも再デプロイできるように、これをスキップしてください。

ビルドによって作成された成果物を変更しないようにしたいと思います。特に、Webデプロイメントパッケージがzipファイルであるため、Webデプロイメントパッケージを再ビルドする必要があります。

私は、次のオプションを作ってみた:

  1. は、現在開発へのデフォルトの状態で起動するためにどのような環境をほのめかすために、ターゲット・マシン上で環境変数を使用して、そうでない場合。この主な欠点は、異なるマシンを指す同じマシン上でアプリケーションの2つのインスタンスを実行することができないことと、同じマシンに通常uat環境とステージング環境をデプロイすることが問題になるためです。

  2. どの環境を起動するかを指定してweb.configをリモートから編集する方法はわかりませんが、最適なオプション(?)になる可能性があります。

  3. 実行時にweb.config値を設定するように指示するなど、Web配置でできることがあるかもしれませんが、これが可能かどうかわかりません(?)。

明らかなものがありませんか?どんな助けでも大歓迎です!

答えて

0

は私がやったことは以下である、第三の選択肢は実際に可能であるが判明します
<parameters> 
    <parameter name="Environment" 
    description="Please provide the environment name for the application." 
    defaultValue="Development" 
    tags=""> 
    <parameterEntry 
     kind="XmlFile" 
     scope="\\web.config$" 
     match="/configuration/appSettings/add[@key='Environment']/@value" /> 
    </parameter> 
</parameters> 

これにより、展開パッケージと同じ場所にSetParameters.xmlが作成されます。

あなたは、これは次のようになりますMSBuildの中で、たとえば、あなたが配備ステップが実行されているときに展開する環境の値でSetParameters.xmlを更新することができます。

<XmlUpdate 
    XmlFileName="$(DeployFolder)\Project.SetParameters.xml" 
    Xpath="/parameters/setParameter[@name='Environment']/@value" 
    Value="$(Environment)" /> 

今、あなたはあなたのdeploy.cmdを実行することができますリモートマシンにデプロイするときにパラメータを設定します。

0

複数のインスタンスを同じマシンにデプロイする場合は、ファイルパスが役立つと思われますか?例えばC:\ inetpub \ dev これはおそらく最も簡単なアプローチです。

オプション1を使用した場合は、環境変数よりもレジストリを使用します。

また、ビルドスクリプトのターゲット環境は、使用しているビルドサーバーによって異なる場合があります。

は、私が変更したいパラメーターが含まれているWebアプリケーションプロジェクトのルートにparameters.xmlファイルを作成します。

関連する問題