【问题标题】:How to setup web.config for build to multi-environments without code changes?如何在不更改代码的情况下设置 web.config 以构建到多环境?
【发布时间】:2010-12-31 12:22:54
【问题描述】:

我最近在一个非常有趣的环境中开发了一个应用程序。此应用程序有 6 或 7 个并行级别,开发人员只能触及第 1 2 个级别。作为公司政策的一部分,所有构建都是作为 Tivoli 包完成的,而且设置起来非常复杂。

最后一个问题是不允许在第一级或“开发”服务器之后进行任何代码更改,因此 web.config 包含多个加密的环境变量部分。该应用程序旨在通过 IIS 中设置的路径和变量来感知其所处的环境。

这是一个需要维护的野兽,那么对于此类问题,什么是简单或更好的架构?

【问题讨论】:

  • 等待VS2010,它支持不同配置的多个web.config部分。

标签: asp.net architecture


【解决方案1】:

最新版本的 ASP.NET 现在支持 Web 配置转换,允许您更改项目中的特定设置以进行部署、测试或暂存。这是一个很棒的intro by Tom Hundley

【讨论】:

    【解决方案2】:

    嗯,(免责声明:我会谈谈我写的东西

    您的主题似乎与帖子略有不同,但我想我明白您的意思。我正在编写的工具dashy 可让您处理单个代码库,并允许您针对各种环境对其进行配置。但是,它不会对这些环境施加安全限制。但是,根据您的源代码控制和一般系统,它可能会引起您的兴趣。您应该从主页上的图片中对它的工作方式有一个合理的了解。也许它是有趣的,也许不是,但它是我们用来管理部署到不同环境的东西。目前正在开发中(“测试版”),但当前版本适合测试。

    【讨论】:

    • 嘿,我赞成这个只是因为它很酷的工具,dashy 看起来不错,但我们被锁定在一个古老的 Tivoli 构建工具中以将它们推向食物链,没有 MSbuild 或其他构建工具是选项。太疯狂了,这意味着在第一次构建之后,它会一直上升到 prod 不变。
    • Tj:啊,很公平。但请注意,您可以在任何构建系统中使用 dashy。所有 dashy 需要的是一个 svn repo 来提交。然后,您可以通过将配置 移动到 dashy 获得全部好处(它只是 xml,因此您可以根据需要轻松编辑它)。然后,它使您可以在存储库中维护“发布”,从而可以跟踪事物等等。但是干杯,它仍在开发中,(尽管我们在工作中将它用于现场直播,而我在家里使用它),所以它不能完全支持你想要的(版本的转换;但那是我已经最近几天工作!:)
    【解决方案3】:

    您可以在 Web 配置中包含所有环境的所有配置,并在其键前面加上相应环境的机器名称。然后,使用 Server.MachineName(或其他方式来识别应用程序正在运行的服务器),您可以访问正确的配置。

    <appSettings>
    <add key="DEVMACHINENAME_baseURL" value="http://dev.foo.com" />
    <add key="QAMACHINENAME_baseURL" value="http://qa.foo.com" />
    </appSettings>
    

    由于应用程序可以自行查找信息,因此无需任何人进入并修改 web.config 中的任何内容。

    【讨论】:

    • 这就是我们现在使用巨大的多部分配置的方式,但机器名称是一个新的旋转。我们在上层环境中进行负载平衡,因此这可能不是一个选择。
    【解决方案4】:

    您是否尝试过使用ConfigurationManager 中的OpenExeConfiguration 并为适当的环境显式加载正确的配置,而不是仅使用默认的web.config

    更多信息,请查看OpenExeConfiguration on MSDN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2018-04-16
      • 2020-03-15
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      相关资源
      最近更新 更多