【问题标题】:ASP.NET Core 5.0 Web API throws error 405 when trying to delete record using HttpDeleteASP.NET Core 5.0 Web API 在尝试使用 HttpDelete 删除记录时抛出错误 405
【发布时间】:2022-01-27 21:48:46
【问题描述】:

我正在构建一个 ASP.NET Core 5.0 Web API 应用程序,正如我在标题中提到的那样尝试从数据库中删除记录时遇到问题;我收到来自HttpDelete 请求的错误405 Method Not Allowed 响应。

PS:我已经添加了 services.AddCors()app.UseCors() 与默认策略。

这是删除方法代码

public bool deleteLivreById(int id)
{
    Livre l = _db.Livres.Find(id);
    _db.Livres.Remove(l);
    _db.SaveChanges();
    return true;
}

这是控制器内部的HttpDelete 方法

[HttpDelete("{id}/delete")]
   public bool deleteLivreById(int id)
      {
        return  _objGererLivre.deleteLivreById(id);
      }

最后这是导航到HttpDelete Url时来自控制台的图片

编辑:这是我的控制器的完整代码

namespace GestionLivre.Controllers
{
    [ApiController]
    [Route("test")]
    public class LivreController : Controller
    {
        private IGererLivre _objGererLivre;
        public LivreController(IGererLivre gererLivre)
        {
            _objGererLivre = gererLivre;
        }
        [HttpGet]
        public JsonResult getLivres()
        {
            return Json(_objGererLivre.getLivres());
        }
        [HttpDelete("{id}/delete")]
            public bool deleteLivreById(int id)
        {
               return  _objGererLivre.deleteLivreById(id);
        }
}
}

【问题讨论】:

  • 你能显示你的控制器路由吗?
  • 另外你可能应该添加 [FromRoute] 属性为:public bool getById([FromRoute]int id)
  • 我刚刚编辑了帖子并添加了完整的控制器代码,我也尝试添加 [FromRoue] 但仍然遇到同样的问题

标签: c# request asp.net-core-webapi asp.net-core-5.0 http-method


【解决方案1】:

我打开屏幕截图,发现您选择了“GET”作为 http 动词,方法类型为“删除”。能否请您更改一下并尝试。

【讨论】:

  • 我注意到了,但我真的不知道如何在控制器给出“HttpDelete”时更改标头请求“GET”。如果你能告诉我如何改变它
【解决方案2】:

据我了解,默认情况下,当您尝试在浏览器中访问 URL 时,它使用 GET 方法。所以我们应该传入适当的方法(POST,GET,DELETE,PATCH,PUT)如果你想测试HTTP方法,我建议你使用Postman或Swagger。 Postman 比你应该添加到服务配置和中间件的 Swagger 更容易使用。 邮递员示例:

然后像这样配置正文以返回响应。

还建议您使用 REST 最佳实践。并正确命名资源。 https://restfulapi.net/resource-naming/#:~:text=2.-,Best%20Practices,-2.1.%20Use%20nouns

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 2013-07-22
    • 1970-01-01
    • 2021-09-30
    • 2018-03-14
    • 2020-02-10
    • 2014-11-05
    • 1970-01-01
    相关资源
    最近更新 更多