9

環境変数(dev/staging/productionなどの異なる環境用)に基づいてweb.configファイルの接続文字列を変更する必要があります。私はビルドタスクを使用して異なる構成を変更する他のソリューションを見てきましたが、環境変数に基づいて接続文字列を変更できるものを見つけることができませんでした。誰でもこれを行う方法を知っていますか?ASP.NETの環境変数に基づいてweb.configファイルを変更する

答えて

7

我々は、web.configファイル内のappSettingsとのconnectionStrings要素のためのconfigSource属性を使用しています。

基本的に、すべての環境(dev、qa、production)に対して同じweb.configファイルが用意されています。

<?xml version="1.0"?> 
<configuration> 
    <appSettings configSource="local.appsettings.config" /> 
    <connectionStrings configSource="local.connectionstrings.config" /> 
</configuration> 

その後、我々は維持し、次のファイル:

はその後、我々は、web.configファイルで

...たとえば...ファイル "特定の環境を" 別々の利用

local.appsettings.config.development 
local.appsettings.config.qa 
local.appsettings.config.production 
local.connectionstrings.config.development 
local.connectionstrings.config.qa 
local.connectionstrings.config.production 

配備前にすべてのasp.netアプリケーションをあらかじめコンパイルしているので、適切な構成ファイルをコピーするCIソリューションによって利用されるカスタムmsBuildタスクがあります(ターゲット環境に基づいて適切な.configファイルにMENT)...

だから、我々はDEVに展開する場合、local.appsettings.config.development - > local.appsettings.config

我々はQAにデプロイする場合は、ローカル.appsettings.config.qa - > local.appsettings.config

これにより、すべての環境でコアweb.configを同じに保つことができます。

+0

ねえおかげで、しかし、環境変数に基づいてこれを実行する方法はありますか?私はこのようにしたいと思っていますが、私のクライアントはそれぞれの環境で設定した環境変数に基づいてそれを行うように求めました。それがそうであれば、私はその部分(環境変数を見ている部分)を欠いています。ありがとう – Ryan

+1

各環境の接続文字列を単一の.configファイルに保存する必要があります。= "" <のconnectionStrings> <名を追加= "dbString_dev" たconnectionString = "" /> <名を追加= "dbString_qa" たconnectionString = "" /> <名を追加= "dbString_prod" たconnectionString:よう 何か/> 次に、環境変数に基づいて正しい種類の文字列を読み込むことができるように、コード内に「 」というメジャーな脆弱性があります計画は..今あなたの開発構成ファイルと同じファイルにすべての実動構成情報があります。 – datacop

+0

このメソッドは、App_DataフォルダにconfigSourceファイルとともに使用します。 App_Dataフォルダを作成し、後でサーバー環境の構成と混合します。 –

2

web.configに「isTesting」のような2つの接続文字列と別の変数を設定すると、使用する接続文字列はisTestingに基づいて決まりますか?

0

設定セクションを使用することもできますし、セクション間でサーバー名の切り替えを行うこともできます。この方法で同じ名前のキーを持つことができます。

link text

関連する問題