拆分特定于应用程序和特定于客户的web.配置部分
本文关键字:web 配置部 于客户 应用程序 拆分 客户 | 更新日期: 2023-09-27 18:03:17
我们有一个web应用程序在各种客户的本地运行。网络。配置包含大量
- 的东西是"我们的应用程序的一部分"(如大多数
<system.web>
和<system.webServer>
块)和 - 需要自定义的东西(连接字符串,应用程序设置和各种自定义标签)。
在更新期间,第1部分应该被替换,第2部分应该保持原样。理想情况下,我有一个web.app.config
和一个web.custom.config
,所以我只能替换第一个。当然,IIS需要在运行时神奇地"合并"这些文件,但它不会这样做。
我找到了以下方法:
-
将自定义内容放在外部文件中,即
<appSettings configSource="appSettings.config"/>
.我不能使用它,因为它只能用于完整的部分。但是,例如,
aspnet:MaxHttpCollectionKeys
设置是一个应该由应用程序控制的值,而其他应用程序设置值应该是可定制的。 -
参数化或Web。配置转换。
我不能使用,因为我们的客户安装了各种版本的应用程序。因此,我需要替换 web的特定应用程序部分。配置而不是转换单个标记。此外,我想避免在我们的部署过程中添加msdeploy (xcopy加上一些脚本来创建IIS应用程序并配置它们,目前工作得很好)。哦,我还会有一张大网。
是否有一些优雅的解决方案我错过了?
这是真的,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中,或者将其移动到单独的自定义配置部分。