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

.Net Core 5 MVC Delete请求返回404/405无法触发如何解决?

.NET Core 5 MVC Delete操作返回404/405问题解决方案

405状态码对应原因及解决办法

  • IIS/IIS Express WebDAV模块拦截:这是最常见的原因,WebDAV模块会默认拦截名称包含Delete的请求,哪怕你使用POST方式提交也可能被拦截。
    解决方法:在项目根目录新建/修改web.config文件,添加以下配置禁用WebDAV:
    <system.webServer>
      <modules>
        <remove name="WebDAVModule" />
      </modules>
      <handlers>
        <remove name="WebDAV" />
      </handlers>
    </system.webServer>
    
  • HTTPS重定向冲突:如果你的控制器或者DeletePost方法上加了[RequireHttps]特性,且当前是HTTP协议访问,框架会自动触发302重定向,重定向后请求方法会变为GET,和Action上的[HttpPost]特性不匹配就会返回405。
    解决方法:本地开发时启用HTTPS访问,或者临时移除[RequireHttps]特性验证。

404状态码对应原因及解决办法

  • 路由未匹配到Action:
    1. 确认DeletePost方法的访问修饰符为public,非public的方法不会被路由系统扫描到
    2. 检查DeletePost方法上是否添加了自定义[Route]特性,如果存在自定义路由,需要保证视图中asp-action的值和路由模板匹配,也可以直接删除Action上的自定义路由使用默认MVC路由
    3. 检查控制器类上是否添加了API路由前缀(比如[Route("api/[controller]")]),这类路由会覆盖默认MVC路由,导致普通表单请求匹配不到
  • 参数绑定规则冲突:如果DeletePost方法的id参数前加了[FromQuery]或者[FromRoute]特性,框架会优先从路由或者查询字符串中获取id,而你的id是放在表单隐藏域中,就会导致参数匹配失败返回404,删除这些参数绑定特性即可。
  • 表单Action路径生成错误:打开浏览器开发者工具,检查form标签的action属性是否为/[你的控制器名]/DeletePost,如果路径不对可以在form标签上手动指定控制器,比如:
    <form method="post" asp-controller="你的控制器名称" asp-action="DeletePost">
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:12:00