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

ASP.NET Core端点报Http 405错误,Vue.js的axios.delete请求如何修复?

修复Http 405 MethodNotAllowed错误的方案

问题1:前端URL拼接错误

你的前端请求URL拼接时缺少斜杠,导致实际请求的路由和后端定义不匹配。比如id=1时,前端会请求/api/request/delete1,但后端期望的是/api/request/delete/1,这直接导致路由无法匹配,触发405错误。

修复前端代码:
使用模板字符串或添加斜杠来正确拼接URL:

deleteRequest(id) {
   axios.delete(`http://localhost:32961/api/request/delete/${id}`)
      .then(() => {
        this.getCreated()
      })
      .catch((err) => console.error(err));
},

问题2:后端参数接收与路由不匹配

后端路由定义了delete/{id},但方法却通过[FromBody] Request request接收参数——既没有利用路由中的id,还要求Delete请求携带Body(这不符合RESTful规范,且ASP.NET Core默认对Delete带Body的场景支持有限)。

修复后端代码:
直接接收路由中的id参数,查询对应实体后执行删除:

[Route("delete/{id}")]
[HttpDelete]
public IActionResult Delete(int id) // 根据你的RequestId实际类型调整,比如string
{    
    var request = _db_Context.Requests.FirstOrDefault(a => a.RequestId == id);
    if (request == null)
    {
        return NotFound("请求记录不存在");
    }
    _db_Context.Requests.Remove(request);
    _db_Context.SaveChanges();
    return Ok(request);
}

问题3:后端删除逻辑错误

原代码中FirstOrDefault的查询结果未赋值给变量,直接调用Remove(request)会尝试删除一个未被EF上下文跟踪的对象,导致数据库操作失败。修复后的代码先查询出有效实体,再执行删除操作。

额外检查:CORS配置

如果以上修复后仍有问题,确认后端已配置CORS允许前端的跨域请求。在ASP.NET Core的Program.cs中添加:

builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowFrontend", policy =>
    {
        policy.WithOrigins("http://localhost:你的前端端口")
              .AllowAnyMethod()
              .AllowAnyHeader();
    });
});

// 中间件配置阶段添加
app.UseCors("AllowFrontend");

内容的提问来源于stack exchange,提问作者Mert Ünal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:50:27