ServiceStack + Azure 云服务(CloudConfigurationManager)
ServiceStack + Azure Cloud Service (CloudConfigurationManager)
我们最近将我们的 ServiceStack 应用程序转换为 Azure 云服务。
我们发现,在内部,ServiceStack 并不知道它需要使用 CloudServiceConfiguration 管理器而不是 ConfigurationManager 加载配置设置(如 oauth.RedirectUrl)。
有没有办法连接适合新环境的ServiceStack?
谢谢!
Azure CloudServiceConfiguration 没有 AppSettings provider,通过继承 AppSettingsBase
并覆盖 GetNullableString()
应该很容易创建一个,否则最简单的方法是填充 Dictionary<string,string>
使用 Azure 的配置并将它们加载到 DictionarySettings
,例如:
AppSettings = new DictionarySettings(azureSettings);
如果你想同时使用 Web.config <appSettings/>
和 Azure 设置,你应该使用 MultiAppSettings
在 AppHost 构造函数中使用 AppSettings 的级联源,例如:
AppSettings = new MultiAppSettings(
new DictionarySettings(azureSettings),
new AppSettings());
您不需要使用 'MultiAppSettings',因为 CloudConfigurationManager 会回退到您的配置 appsettings 部分。
(appsettings only)
根据我的测试,您似乎根本不需要 asp.net website 中的任何内容,因为 web.config 设置似乎以某种方式被覆盖天蓝色的设置。然而,在 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);
}
}
我们最近将我们的 ServiceStack 应用程序转换为 Azure 云服务。
我们发现,在内部,ServiceStack 并不知道它需要使用 CloudServiceConfiguration 管理器而不是 ConfigurationManager 加载配置设置(如 oauth.RedirectUrl)。
有没有办法连接适合新环境的ServiceStack?
谢谢!
Azure CloudServiceConfiguration 没有 AppSettings provider,通过继承 AppSettingsBase
并覆盖 GetNullableString()
应该很容易创建一个,否则最简单的方法是填充 Dictionary<string,string>
使用 Azure 的配置并将它们加载到 DictionarySettings
,例如:
AppSettings = new DictionarySettings(azureSettings);
如果你想同时使用 Web.config <appSettings/>
和 Azure 设置,你应该使用 MultiAppSettings
在 AppHost 构造函数中使用 AppSettings 的级联源,例如:
AppSettings = new MultiAppSettings(
new DictionarySettings(azureSettings),
new AppSettings());
您不需要使用 'MultiAppSettings',因为 CloudConfigurationManager 会回退到您的配置 appsettings 部分。 (appsettings only)
根据我的测试,您似乎根本不需要 asp.net website 中的任何内容,因为 web.config 设置似乎以某种方式被覆盖天蓝色的设置。然而,在 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);
}
}