6

私はAzureで動作するASP.NET MVC 3アプリケーションを持っています。また、SQL Azureをデータベースに使用します。MVC3 Azureアプリケーション用の複数のweb.configファイルの管理

私はこのアプリケーションを異なるインスタンス(テスト、デモ、複数のプロダクション)に展開したいと思います。各インスタンスには独自のSQLデータベースが必要です。

新しいAzure Toolsアップデートでは、複数のサービス構成を管理できることがわかりました。これは素晴らしいことであり、私の問題をほぼ解決します。唯一の問題は、プロジェクトのMVC部分にあるweb.configファイルのSQL接続文字列にあります。

複数のサービス構成機能とまったく同じ機能が必要ですが、SQL接続文字列の機能と同じです。

ありがとうございます!

答えて

5

.Net configuration transformationsは仕事をする必要があります。 Azure Service Configurationsと同様に、展開する各インスタンスに対して別々のWeb.ConfigurationName.configファイルが作成されます。適切な構成(テスト、デモなど)でソリューションを構築すると、正しい "インスタンス"構成値がWeb.configに挿入されます。

+0

これは私が使用するアプローチであり、うまく動作します。 –

+0

あなたの設定ファイルにXLSトランスフォームを書くことを正直にお勧めできますか?設定ファイルは既にそれほど大きな泥だらけです。 –

3

私は、通常、SQL接続文字列をServiceDefinition。* .cscfgファイルに保存します。そうすれば、実行中のインスタンスで編集できる利点が得られます。これは、VIPスワップに最適です。

あなたが開発マシン上でエミュレータの外にテストしている場合、それは設定の上に抽象化を書くためにかなり簡単です:

class AzureConfig : IConfig 
{ 
    public string GetConnectionString(string name) 
    { 
    get 
    { 
     return RoleEnvironment.GetConfigurationSettingsValue(name); 
    } 
    } 
} 

class OnPremConfig : IConfig 
{ 
    public string GetConnectionString(string name) 
    { 
    get 
    { 
     return ConfigurationManager.ConnectionStrings[name].ConnectionString; 
    } 
    } 
} 

はその後RoleEnvironment.IsAvailableをチェックし、関連する型を返すためにあなたのIoCコンテナを設定します。

関連する問題