2010-12-06 13 views
0

ASP.NET 4.0 Webアプリケーションを、以前のIISとAzureの両方で実行するようにリファクタリングしています。設定(Properties名前空間)では、をAzureSettingsStateStandaloneSettingsStateで実装したいと思います。どちらも設定ゲッターメソッドを提供しています。ASP.NET WebアプリケーションAzureの設定

ASP.NETはどのように非文字列の値をデシリアライズするか(たとえばTimeSpanまたはStringCollection)、コンテキストクラスで自分自身でデシリアライズすることができます。すべての設定は文字列であるようです。

public abstract class ConfigStateBase 
{ 
    public abstract string GetSettingValue(string setting); 
} 

答えて

0

私はそれが動作するかどうかまだわからないが、このような何かをやった:D

public class AzureConfig:StandaloneConfig 
{ 
    protected override string GetAppSetting(string name) 
    { 
     return RoleEnvironment.GetConfigurationSettingValue(name); 
    } 

    protected override string GetConnectionString(string name) 
    { 
     return RoleEnvironment.GetConfigurationSettingValue(name); 
    } 
} 

public class StandaloneConfig 
{ 
    public IndexedSetting AppSettings { get; private set; } 
    public IndexedSetting ConnectionStrings { get; private set; } 

    public StandaloneConfig() 
    { 
     AppSettings = new IndexedSetting(GetAppSetting); 
     ConnectionStrings = new IndexedSetting(GetConnectionString); 
    } 

    protected virtual String GetAppSetting(String name) 
    { 
     return ConfigurationManager.AppSettings[name]; 
    } 

    protected virtual String GetConnectionString(String name) 
    { 
     var cs = ConfigurationManager.ConnectionStrings[name]; 
     if (cs != null) 
      return cs.ConnectionString; 
     else 
      return null; 
    } 

    public class IndexedSetting 
    { 
     Func<String, String> _getParameter; 

     public IndexedSetting(Func<String,String> getParameter) 
     { 
      _getParameter = getParameter; 
     } 

     public String this[String name] 
     { 
      get { return _getParameter(name); } 
     } 
    } 

は、それを使用するアズールを伝えることを忘れないでください!

static AzureConfig _config = new AzureConfig(); 

    void Application_Start(object sender, EventArgs e) 
    { 
     Microsoft.WindowsAzure.CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) => 
     { 
      configSetter(_config.AppSettings[configName]); 
     }); 

    } 

あなたがそれを使用している場合、私はそれが動作するかどうか知りたい意味...私は支払いを受けるたい、私に知らせてください:D

関連する問題