拆分特定于应用程序和特定于客户的web.配置部分

本文关键字:web 配置部 于客户 应用程序 拆分 客户 | 更新日期: 2023-09-27 18:03:17

我们有一个web应用程序在各种客户的本地运行。网络。配置包含大量

  1. 的东西是"我们的应用程序的一部分"(如大多数<system.web><system.webServer>块)和
  2. 需要自定义的东西(连接字符串,应用程序设置和各种自定义标签)。

在更新期间,第1部分应该被替换,第2部分应该保持原样。理想情况下,我有一个web.app.config和一个web.custom.config,所以我只能替换第一个。当然,IIS需要在运行时神奇地"合并"这些文件,但它不会这样做。

我找到了以下方法:

  • 将自定义内容放在外部文件中,即<appSettings configSource="appSettings.config"/> .

    我不能使用它,因为它只能用于完整的部分。但是,例如,aspnet:MaxHttpCollectionKeys设置是一个应该由应用程序控制的值,而其他应用程序设置值应该是可定制的。

  • 参数化或Web。配置转换。

    我不能使用,因为我们的客户安装了各种版本的应用程序。因此,我需要替换 web的特定应用程序部分。配置而不是转换单个标记。此外,我想避免在我们的部署过程中添加msdeploy (xcopy加上一些脚本来创建IIS应用程序并配置它们,目前工作得很好)。哦,我还会有一张大网。

是否有一些优雅的解决方案我错过了?

拆分特定于应用程序和特定于客户的web.配置部分

这是真的,configSource是用于完整的部分,但appSettings有一个特殊的属性称为file,可以用来引用一个文件被"合并"到appSettings列表。详见https://msdn.microsoft.com/en-AU/library/ms228154(v=vs.85).aspx。我已经广泛使用合并在一个appSettings。带有环境特定值的配置文件—本地开发值(包含在repo中)或带有环境特定设置转储到服务器上的文件。在通过qa、wat、prod等环境推广构建工件时很有帮助。对于您来说,该文件可能包含客户特定的值,并且在部署更新时不会更改。

另一种方法是将客户特定的配置重构到Custom configuration Section中。除了让您键入访问配置值之外,您还可以从web中的一个部分加载它。配置,从web中的一个部分加载它。配置通过configSource引用另一个文件,或者你可以直接从一个单独的文件加载。

您可以将应用程序配置留在appSettings中,或者将其移动到单独的自定义配置部分。