IIS 8.5发送PROPFIND请求出现405 Method Not Allowed错误求助
解决IIS 8.5中PROPFIND请求返回405 Method Not Allowed的问题
从你贴出的Failed Request Tracing日志里,核心问题其实已经很明显了:
Event MODULE_WARNING ModuleName WebDAVModule Data1 WebDAV Disabled
这说明WebDAV模块虽然在配置文件里有定义,但实际上并没有被启用,这才导致你的PROPFIND请求被直接拒绝,返回405错误。下面是针对性的排查和修复步骤:
1. 先确认WebDAV角色服务真的装了
别光看配置,先检查服务器上有没有安装WebDAV发布角色服务:
- 打开「服务器管理器」→「添加角色和功能」
- 找到「Web服务器(IIS)」→「Web服务器」→「常见HTTP功能」,确保「WebDAV发布」已经勾选
- 安装完成后,记得运行
iisreset重启IIS服务
2. 修复web.config里的WebDAV配置冲突
你在web.config里先移除WebDAV handler再重新添加的操作有问题:
- WebDAVModule是IIS内置模块,不需要手动指定
scriptProcessor,这会导致模块加载异常 - 这种重复定义反而会覆盖applicationHost.config里的正确配置
建议把web.config的相关部分改成这样:
<system.webServer> <handlers accessPolicy="Read, Execute, Script"> <remove name="WebDAV" /> </handlers> <webdav> <authoring enabled="true"> <properties allowAnonymousPropfind="true" allowInfinitePropfindDepth="true" /> </authoring> </webdav> </system.webServer>
这样既移除了可能冲突的handler定义,又明确启用了WebDAV创作功能,同时继承applicationHost.config里的正确handler配置。
3. 检查applicationHost.config的模块注册
确保applicationHost.config里已经正确注册了WebDAV模块,找一下这段配置:
<globalModules> <add name="WebDAVModule" image="%windir%\System32\inetsrv\webdav.dll" /> </globalModules>
如果这一行缺失,手动加上,然后重启IIS。
4. 验证站点级的WebDAV设置
打开IIS管理器,对着你的站点做这几步:
- 打开「WebDAV创作规则」,确保已经创建了允许访问的规则(比如允许所有用户,或者你需要的特定用户组)
- 打开「WebDAV设置」,确认「允许匿名PROPFIND」和「允许无限深度PROPFIND」已经启用(和你配置文件里的设置对应上)
5. 排查请求筛选的限制
检查站点的「请求筛选」→「HTTP谓词」:
- 确保PROPFIND没有被加入拒绝列表
- 确认「允许未列出的谓词」是启用状态(和你applicationHost.config里的
verbs allowUnlisted="true"一致)
做完这些步骤后,再测试PROPFIND请求,应该就能解决405的问题了。如果还是不行,建议检查一下应用程序池的身份有没有足够的权限访问站点的目录。
内容的提问来源于stack exchange,提问作者Tim vdBerg
相关产品推荐
相关产品推荐

