【问题标题】:Managing Multiple web.config files for an MVC3 Azure application管理 MVC3 Azure 应用程序的多个 web.config 文件
【发布时间】:2012-03-09 02:34:16
【问题描述】:

我有一个在 Azure 上运行的 ASP.NET MVC 3 应用程序。它还使用 SQL Azure 作为数据库。

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

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

我想要与多服务配置功能完全相同的功能,但要针对 SQL 连接字符串。

感谢您的帮助!!

【问题讨论】:

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


    【解决方案1】:

    .Net configuration transformations 应该可以完成这项工作。与 Azure 服务配置一样,会为要部署到的每个实例创建一个单独的 Web.ConfigurationName.config 文件。使用正确的配置(测试、演示等)构建解决方案会将正确的“实例”配置值插入 Web.config。

    【讨论】:

    • 您如何诚实地推荐在自己的配置文件上编写 XLS 转换?配置文件已经够大了。
    【解决方案2】:

    我通常将我的 SQL 连接字符串保存在 ServiceDefinition.*.cscfg 文件中。这样您就可以获得额外的优势,即能够在运行的实例上编辑它们,这对于进行 VIP 交换非常有用。

    如果您在开发机器上的模拟器之外进行测试,那么在配置上编写一个抽象是相当简单的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多