2011-02-10 7 views
3

私はASP.NET Webアプリケーションを使用している10人のチームに所属していますが、サテライトオフィスの唯一の開発者です本社とは異なるドメイン)。 Web.configでは、Webアプリケーションを私の特定のドメイン(<identity>要素とデータベース接続文字列への変更)で動作させるために変更を加える必要があります。ソース管理のローカルWeb.configに特定の変更を簡単に加える方法

元のWeb.configファイルを変更することはできません。これは、私のチームの誰もが邪魔になるためです。 MsBuildのWeb.config変換は有望でしたが、Webアプリケーションを展開する場合にのみ機能します(私はアプリケーションのルートディレクトリにIISを指しています)。 <TransformXml>ビルドステップを手動で実行しましたが、ローカルのWeb.configファイルを上書きしません(アクセスが拒否されました)。

ローカルのWeb.configファイルに対して、ソース管理の内容を変更しますか?

答えて

0

ソースコントロールの内容を変更しない解決策はありません。

Global.asax条件の設定:

void Session_Start(object sender, EventArgs e) 
{ 
    if (HttpContext.Current.Server.MachineName == "JOE" ){ 
    //my development machine 
    Application["mysetting"] = "myspecial setting"; 
    }else{ 
    // ... 
    } 
} 

複数web.config

時々、あなたは異なるサーバーに異なるweb.config秒を持っている。しかし、ここであなたはそれがあなたの状況に働くかもしれないと考えることができ、いくつかのオプションがあります。 。それぞれの設定を管理することは悪夢になる可能性があるので、スタックオーバーフローに関する質問(見つからない!申し訳ありません)では、適切なweb.config.<setting>がメインのweb.configファイルにコピーペーストされている場合にこれを示唆しています。 asp.net managing multiple web.config files

public static string GetConnString() 
{ 
    string connString = ConfigurationSettings.AppSettings[GetConfigKey("database")]; 
    return connString; 
} 

public static string GetConfigKey(string baseKey) 
{ 
    string str = baseKey; 
    if (Dns.GetHostName().StartsWith("dinoch")) 
    { 
     str = str + "-dev"; 
    } 
    else if (Dns.GetHostName().StartsWith("prodsrvr")) 
    { 
     str = str + "-prod"; 
    } 
    return str; 
} 

<configuration> 
    <appSettings> 
    <add key="database-dev" value="server=(local)\vsdotnet;database=ASPXAPPS;Integrated Security=SSPI" /> 
    <add key="database-prod" value="server=(local)\vsdotnet;database=ASPXAPPS;Integrated Security=SSPI" /> 
    </appSettings> 
</configuration> 
1

ローカルの変更を必要とする最も一般的なのセクションでは、のconnectionStringsです:

Application/ 
    web.config.devserver 
    web.config.joebrown 
    web.config.production 

は、より多くの詳細については、スタックオーバーフローの記事を参照してください。動的

をごweb.config設定を変更appSettings。どちらのセクションでも、.NETフレームワークでは別のファイルに格納できます。

これらの別々のファイルをソース管理から外しておくだけです(無視する、一度取得する、クロークする、ファイルのバージョン管理を無効にする...どんなフレーバソースコントロールを使用するか)。プロセスの偽装のため 要素について

例えば、

<configuration> 
    <connectionStrings configSource="connections.config"/> 
</configuration> 


<connectionStrings> 
    <add name="Name" 
    providerName="System.Data.ProviderName" 
    connectionString="My;Personal;Connection;String;" /> 
</connectionStrings> 
+0

何? (Web.configにしかないもの) – Mike

関連する問題