代码之家  ›  专栏  ›  技术社区  ›  Tj Kellie

如何在不更改代码的情况下为构建到多环境设置web.config?

  •  3
  • Tj Kellie  · 技术社区  · 16 年前

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

    最后一个问题是不允许代码更改超过一级或“dev”服务器,因此web.config包含多个加密的环境变量部分。应用程序是通过在iis中设置的路径和变量来感知它所处的环境的。

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

    4 回复  |  直到 11 年前
        1
  •  1
  •   Noon Silk    16 年前

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

    你的主题似乎与文章略有不同,但我想我明白你的意思。我写的工具, dashy ,允许您处理单个代码基,并允许您为各种环境配置它。它 但是,对这些环境的安全限制要高于其他环境。但是,根据您的源代码管理和一般系统,它可能会引起兴趣。你应该从主页上的图片中合理地了解它的工作方式。也许这是感兴趣的,也许不是,但这是我们用来管理部署到不同环境的东西。目前正在进行测试,但当前版本适合测试。

        2
  •  1
  •   Michelle Welcks wvd    11 年前

    最新版本的asp.net现在支持web配置转换,允许您更改项目中用于部署、测试或登台的特定设置。这是一个伟大的 intro by Tom Hundley .

        3
  •  0
  •   Gyuri    16 年前

    你试过用 OpenExeConfiguration ConfigurationManager 显式地为适当的环境加载适当的配置,而不是仅使用默认的 web.config ?

    更多信息,请查看 OpenExeConfiguration on MSDN

        4
  •  0
  •   sujata    16 年前

    您可以在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中的任何内容。