我在Azure上运行了一个ASP.NET MVC 3应用程序。它还将SQL Azure用于数据库。
我想将此应用程序部署到不同的实例(测试,演示,多个制作),每个实例都需要它自己唯一的SQL数据库。
我知道使用新的Azure Tools更新,您可以管理多个服务配置。这很好,几乎可以解决我的问题。唯一的问题是项目的MVC部分中的web.config文件中的SQL连接字符串。
我想要与多服务配置功能完全相同的功能,但是要为SQL连接字符串执行此操作。
感谢您的帮助!!
答案 0 :(得分:5)
.Net configuration transformations应该做的工作。与Azure服务配置一样,为要部署到的每个实例创建单独的Web.ConfigurationName.config文件。使用适当的配置(测试,演示等)构建解决方案将在Web.config中插入正确的“实例”配置值。
答案 1 :(得分:3)
我通常将我的SQL连接字符串保存在ServiceDefinition。*。cscfg文件中。这样你就可以在运行的实例上编辑它们,这对于进行VIP交换非常有用。
如果您在开发机器上的模拟器外部进行测试,那么在config上编写抽象是相当简单的:
class AzureConfig : IConfig
{
public string GetConnectionString(string name)
{
get
{
return RoleEnvironment.GetConfigurationSettingsValue(name);
}
}
}
class OnPremConfig : IConfig
{
public string GetConnectionString(string name)
{
get
{
return ConfigurationManager.ConnectionStrings[name].ConnectionString;
}
}
}
然后设置IoC容器以检查RoleEnvironment.IsAvailable并返回相关类型。