我正在使用VS2017进行部署,而MSdeploy WMSVC似乎正在覆盖要部署到的IIS站点设置。
IIS管理器中的站点设置具有“ IIS身份验证”面板,“匿名身份验证凭据”设置为“应用程序池标识”。
部署后,所有请求都会获得401.3未经授权的错误,因为“匿名身份验证凭据”设置已设置为用户:
很明显,这是由于SERVER特定设置与DEVELOPMENT特定设置之间的冲突而被覆盖的。
在任何MSDeploy方案中,我们可以使用什么策略来防止开发服务器设置干扰目标IIS设置?我的第一个想法是,IIS首先寻找包含system.webService的site.config,然后web.config更新/覆盖其中的任何一个,即<handler remove key="xxx" />
等。这只能通过XDT转换解决吗?
答案 0 :(得分:0)
我认为,解决此问题的最佳方法是使用web.config XDT transforms。 由于web.config文件还将在部署到IIS服务器时发布。如果您在web.config中设置了onymousAuthentication设置,它将使用web.config设置代替服务器的默认设置。
这是另一种解决方案(它将显示错误页面):
如果您不想让web.config修改默认的IIS设置,则可以修改功能委托以禁用对web.config的覆盖。
您可以从IIS管理功能中找到它:
选择只读:
注意: 如果您从web.config修改匿名身份验证。您将遇到以下错误: