ASP.NET Web应用程序Azure设置
问题描述:
我们目前正在重构我们的ASP.NET 4.0 Web应用程序以在普通旧IIS和Azure上运行。对于设置(在Properties
命名空间),我想实现State Pattern与AzureSettingsState
和StandaloneSettingsState
,它们都提供设置getter方法。ASP.NET Web应用程序Azure设置
现在有谁能帮我弄清楚ASP.NET如何反序列化非字符串值(例如TimeSpan
或StringCollection
),这样我就可以在上下文类中自己反序列化它们了吗?所有设置似乎都是字符串。
public abstract class ConfigStateBase
{
public abstract string GetSettingValue(string setting);
}
答
我做了这样的事情,还是不知道,如果它的工作原理: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); }
}
}
不要忘记告诉Azure中使用它!
static AzureConfig _config = new AzureConfig();
void Application_Start(object sender, EventArgs e)
{
Microsoft.WindowsAzure.CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
{
configSetter(_config.AppSettings[configName]);
});
}
如果你使用它让我知道,我要得到报酬......我的意思是我想知道,如果它的工作原理:d