You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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权限:

  1. 打开IIS管理器,选中目标虚拟目录/应用程序
  2. 进入「处理程序映射」→ 点击「添加模块映射」
  3. 配置参数:
    • 请求路径:*
    • 模块:选择ProtocolSupportModule
    • 名称:自定义命名(如AllowPUTVerb)
    • 勾选「仅当请求映射到以下内容时才调用处理程序」,选择「文件或文件夹」
  4. 点击「请求限制」→ 切换到「谓词」标签,添加PUT并保存配置

3. 彻底清理站点级WebDAV配置

若站点级WebDAV模块仍在生效,即使虚拟目录配置了移除也会触发拦截,可在站点根目录的web.config中添加以下配置强制移除:

<system.webServer>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>

4. 启用WebDAV发布(适用于文件上传场景)

如果你的需求是通过WebDAV实现文件操作,需先安装并配置WebDAV:

  1. 打开「服务器管理器」→「添加角色和功能」,找到「Web服务器(IIS)」下的「WebDAV发布」组件并安装
  2. 回到IIS管理器,选中目标虚拟目录,打开「WebDAV创作规则」
  3. 添加新规则,允许PUT、DELETE等所需谓词,并设置对应的用户权限

内容的提问来源于stack exchange,提问作者heuristic_type

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 19:01:14