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

ASP.NET Core 2.0部署IIS 8.5后DELETE/PUT请求报405方法不允许求助

解决ASP.NET Core 2.0在IIS 8.5上PUT/DELETE请求405错误的方案

我帮你梳理几个针对这个问题的排查和解决步骤,都是基于ASP.NET Core 2.0在IIS 8.5部署的常见坑:

  • 检查ASP.NET Core模块的web.config配置
    确保你的web.config里的aspNetCore handler已经明确允许所有HTTP动词。很多时候部署时自动生成的web.config可能没配置全,手动修改成这样:

    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\YourApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
    

    重点看verb="*"这部分,必须设置为允许所有动词,而不是限定GET/POST。

  • 排查IIS请求筛选规则
    打开IIS管理器,找到你的站点,进入「请求筛选」→「HTTP动词」标签:

    • 检查是否存在拒绝PUT或DELETE的规则,如果有直接删除
    • 如果没有允许规则,手动添加允许PUT和DELETE的规则,或者直接设置为允许所有动词
  • 彻底清理WebDAV模块的残留配置
    你之前试过禁用WebDAV,但有时候IIS的applicationHost.config里还会残留WebDAV的注册。可以按这个步骤操作:

    1. 打开C:\Windows\System32\inetsrv\config\applicationHost.config(需管理员权限打开)
    2. 搜索<modules>节点,找到<add name="WebDAVModule" />这一行,直接删除
    3. 再搜索<handlers>节点,找到<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />,同样删除
    4. 重启IIS服务(命令行运行iisreset)
  • 验证应用内部的路由和Action配置
    有时候问题不在IIS,而是ASP.NET Core应用本身:

    • 检查你的API控制器Action是否正确标记了[HttpDelete]或[HttpPut]属性
    • 确认路由模板没有意外限制了HTTP动词,比如有没有在路由里加了多余的约束
    • 可以在本地测试时用Postman之类的工具,确认PUT/DELETE请求本身是能正常工作的,排除应用代码问题
  • 检查ExtensionlessUrlHandler的动词设置
    虽然你之前试过这个,但再仔细核对一次:

    1. 在IIS管理器的站点「Handler Mappings」里找到「ExtensionlessUrlHandler-Integrated-4.0」
    2. 右键选择「编辑请求限制」,切换到「动词」标签
    3. 选择「全部动词」,或者手动输入GET,HEAD,POST,DEBUG,PUT,DELETE确保包含所需动词

按这个顺序排查下来,大部分405的问题都能解决。如果还是不行,可以尝试启用ASP.NET Core的详细日志,看看请求到达应用前有没有被拦截的痕迹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:47:57