管理MVC3 Azure应用程序的多个web.config文件

时间:2012-03-09 02:34:16

标签: visual-studio-2010 asp.net-mvc-3 deployment azure azure-sql-database

我在Azure上运行了一个ASP.NET MVC 3应用程序。它还将SQL Azure用于数据库。

我想将此应用程序部署到不同的实例(测试,演示,多个制作),每个实例都需要它自己唯一的SQL数据库。

我知道使用新的Azure Tools更新,您可以管理多个服务配置。这很好,几乎可以解决我的问题。唯一的问题是项目的MVC部分中的web.config文件中的SQL连接字符串。

我想要与多服务配置功能完全相同的功能,但是要为SQL连接字符串执行此操作。

感谢您的帮助!!

2 个答案:

答案 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并返回相关类型。