我们最近将ServiceStack应用程序转换为Azure云服务。
我们发现,在内部,ServiceStack不知道它需要使用CloudServiceConfiguration管理器而不是ConfigurationManager来加载配置设置(如oauth.RedirectUrl)。
有没有办法连接适合新环境的ServiceStack?
谢谢!
答案 0 :(得分:2)
Azure CloudServiceConfiguration没有AppSettings provider,通过继承AppSettingsBase
并覆盖GetNullableString()
应该相当容易创建一个,否则最简单的方法是填充{{ 1)使用Azure中的配置并将其加载到Dictionary<string,string>
,例如:
DictionarySettings
如果您同时想要Web.config AppSettings = new DictionarySettings(azureSettings);
和Azure设置,则应使用<appSettings/>
在AppHost构造函数中使用AppSettings的级联源,例如:
MultiAppSettings
答案 1 :(得分:0)
您不需要使用“MultiAppSettings”,因为CloudConfigurationManager将回退到您的配置 appsettings 部分。 (appsettings only)
根据我的测试,似乎你似乎在asp.net 网站中根本不需要任何东西,因为web.config设置似乎以某种方式被覆盖了azure设置。在 webjob 中,您需要使用CloudConfigurationManager ...下面是Servicestack AppSettings提供程序的合适实现来包装它。
public class AzureCloudSettings : AppSettingsBase
{
private class CloudConfigurationManagerWrapper : ISettings
{
public string Get(string key)
{
return CloudConfigurationManager.GetSetting(key, false);
}
public List<string> GetAllKeys()
{
throw new NotImplementedException("Not possible with CloudConfigurationManager");
}
}
public AzureCloudSettings() : base(new CloudConfigurationManagerWrapper()) { }
public override string GetString(string name)
{
return GetNullableString(name);
}
public override string GetNullableString(string name)
{
return base.Get(name);
}
}