ServiceStack + Azure云服务(CloudConfigurationManager)

时间:2015-12-07 20:27:52

标签: servicestack azure-cloud-services

我们最近将ServiceStack应用程序转换为Azure云服务。

我们发现,在内部,ServiceStack不知道它需要使用CloudServiceConfiguration管理器而不是ConfigurationManager来加载配置设置(如oauth.RedirectUrl)。

有没有办法连接适合新环境的ServiceStack?

谢谢!

2 个答案:

答案 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);
    }
}