Windows IIS虚拟目录发起PUT请求返回405方法不允许错误求助
IIS虚拟目录PUT请求返回405 Method Not Allowed问题
问题详情
在IIS上配置的虚拟目录可正常通过浏览器访问,PowerShell GET请求也能成功执行:
Invoke-WebRequest -Method GET -Uri 'http://my-directory/' -OutFile my-file
但发送PUT请求时触发405错误:
执行命令:
Invoke-WebRequest -Method PUT -Uri 'http://my-directory/' -InFile my-file
错误信息:
HTTP Error 405.0 - Method Not Allowed. The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.
已尝试以下方案但均无效:
- 从web.config中移除WebDAV模块和处理程序
- 将虚拟目录转换为应用程序
- 确保staticfile处理程序允许所有谓词
可行解决步骤
1. 修正PUT请求目标路径
IIS默认不允许对目录直接发起PUT请求,需将URL指向具体文件名:
Invoke-WebRequest -Method PUT -Uri 'http://my-directory/target-file.txt' -InFile my-file
2. 添加支持PUT的自定义处理程序映射
如果不需要WebDAV,可通过自定义模块映射开放PUT权限:
- 打开IIS管理器,选中目标虚拟目录/应用程序
- 进入「处理程序映射」→ 点击「添加模块映射」
- 配置参数:
- 请求路径:
* - 模块:选择
ProtocolSupportModule - 名称:自定义命名(如
AllowPUTVerb) - 勾选「仅当请求映射到以下内容时才调用处理程序」,选择「文件或文件夹」
- 请求路径:
- 点击「请求限制」→ 切换到「谓词」标签,添加
PUT并保存配置
3. 彻底清理站点级WebDAV配置
若站点级WebDAV模块仍在生效,即使虚拟目录配置了移除也会触发拦截,可在站点根目录的web.config中添加以下配置强制移除:
<system.webServer> <modules> <remove name="WebDAVModule" /> </modules> <handlers> <remove name="WebDAV" /> </handlers> </system.webServer>
4. 启用WebDAV发布(适用于文件上传场景)
如果你的需求是通过WebDAV实现文件操作,需先安装并配置WebDAV:
- 打开「服务器管理器」→「添加角色和功能」,找到「Web服务器(IIS)」下的「WebDAV发布」组件并安装
- 回到IIS管理器,选中目标虚拟目录,打开「WebDAV创作规则」
- 添加新规则,允许
PUT、DELETE等所需谓词,并设置对应的用户权限
内容的提问来源于stack exchange,提问作者heuristic_type
相关产品推荐
相关产品推荐

