如何防止msdeploy覆盖存储在web.config中的服务器上的IIS站点配置

时间:2019-01-07 23:18:16

标签: visual-studio-2017 iis-8 msdeploy

我正在使用VS2017进行部署,而MSdeploy WMSVC似乎正在覆盖要部署到的IIS站点设置。

IIS管理器中的站点设置具有“ IIS身份验证”面板,“匿名身份验证凭据”设置为“应用程序池标识”。

enter image description here

部署后,所有请求都会获得401.3未经授权的错误,因为“匿名身份验证凭据”设置已设置为用户:

enter image description here

很明显,这是由于SERVER特定设置与DEVELOPMENT特定设置之间的冲突而被覆盖的。

在任何MSDeploy方案中,我们可以使用什么策略来防止开发服务器设置干扰目标IIS设置?我的第一个想法是,IIS首先寻找包含system.webService的site.config,然后web.config更新/覆盖其中的任何一个,即<handler remove key="xxx" />等。这只能通过XDT转换解决吗?

1 个答案:

答案 0 :(得分:0)

我认为,解决此问题的最佳方法是使用web.config XDT transforms。 由于web.config文件还将在部署到IIS服务器时发布。如果您在web.config中设置了onymousAuthentication设置,它将使用web.config设置代替服务器的默认设置。

这是另一种解决方案(它将显示错误页面):

如果您不想让web.config修改默认的IIS设置,则可以修改功能委托以禁用对web.config的覆盖。

您可以从IIS管理功能中找到它:

enter image description here

选择只读:

enter image description here

注意: 如果您从web.config修改匿名身份验证。您将遇到以下错误:

enter image description here