在ASP.NET和IIS中部署时覆盖Web配置文件

时间:2019-04-13 06:11:48

标签: asp.net iis

我们将ASP.NET用于IIS 8.5中托管的Web应用程序。 ASP.NET使用web.config文件存储所有与应用程序和IIS相关的配置。每当我们为Web应用程序部署新版本的代码时,我们还将部署web.config文件。

最近,运营团队对该部署过程提出了担忧。他们说,如果有人更改了IIS中的某些设置,并且为此已更新了web.config,则开发人员无法知道该更改,以便他们可以在代码库(版本控制系统)中更新web.config。因此,最终在下次部署时,旧的web.config将覆盖web.config的更改。

有两种可能的解决方案:

  1. 在每次部署代码之前,将web.config与服务器和代码库合并。
  2. 在不同的配置文件中分离应用程序配置和IIS配置。

我的问题是,解决ASP.NET中此类问题的最佳实践是什么?

1 个答案:

答案 0 :(得分:0)

IIS 7+引入了其分布式配置,该配置允许IIS以及.NET配置驻留在Site / App / Directory web.config文件中。造成这种情况的主要原因之一如下:在IIS 6中,每当应用程序团队需要部署其应用程序并更改默认文档之类的设置时,他们都需要IIS团队参与,因为“默认文档”是IIS配置设置。您可能会争辩说,特定应用程序的默认文档设置不是IIS配置,而是应用程序配置。因此,应用程序团队应该拥有该配置设置,并将其部署为应用程序的一部分。

有关IIS7 +配置系统的更多信息:管理员能够配置允许在Web.config文件中设置哪些设置。例如,默认情况下,可以在Web.config文件中设置“默认文档”,而不能设置Windows身份验证之类的身份验证设置。实现实际上可能会变得很复杂,但是如果您想阅读它,可以在这里查看:https://docs.microsoft.com/en-us/iis/get-started/planning-for-security/how-to-use-locking-in-iis-configuration

最终,最佳实践是让IIS管理员配置他们希望应用程序团队管理的设置(通过将这些设置委派给Web.config),然后再不进行修改。换句话说,如果需要更新默认文档,则这是应用程序团队的责任,他们将发布新的web.config文件。如果IIS团队决定要管理默认文档,则他们需要锁定IIS配置系统以禁止在web.config文件中管理默认文档。