gpt4 book ai didi

rest - HTTP 动词 PUT 和 DELETE : 405 Method not allowed - how to allow?

转载 作者:行者123 更新时间:2023-12-03 18:44:54 24 4
gpt4 key购买 nike

我一直在尝试针对 ASP.NET 的所有建议解决方法,以便能够通过 HTTP 方法 PUT 和 DELETE 处理我的 REST Web 服务。但是,它们似乎都不起作用。 (即删除 WebDAV 处理程序或允许所有动词使用 ExtensionlessHandler)。

ASP.NET Core Web API(在 IIS 上)需要什么来允许这两个动词(HTTP PUT 和 DELETE)?

PS:我已经使用 CORS 配置了我们的 Web API 项目,但我正在从同一来源的网页访问 Web 服务。所以这也不是 CORS 问题。

最佳答案

一天后,我现在找到了这个错误的原因。以下原因导致发生此错误:

  • PUT 调用中存在拼写错误,因此未调用 Web API 方法。修复后,必须修复以下两个问题:
  • 用方法作为 Web API 方法的前缀并省略相应的属性( [HttpPut][HttpDelete] )是不够的。因此,必须应用这些属性(这是 ASP.NET Core 特有的)。
  • 向方法提供上述属性是不够的。还需要为这些属性( [HttpPut("{id}")][HttpDelete("id")] )提供方法的地址(和查询字符串)参数。 (这是 ASP.NET 特有的 核心 。)

  • ASP.NET Core Web API: Routing by method name? .

    我相信“ 405 Method not allowed ”是一个非常不恰当的错误消息。它没有反射(reflect)上述三个原因中的任何一个,并且非常困惑。

    此外,我相信“ 400 Bad Request ”、“ 404 Not Found ”,或者 - 更确切地说 - “ 501 更多未实现” |7 6 | 104 | 104适当的 HTTP 返回状态。

    我为此创建了一个 GitHub 问题:
    "405: Method not allowed" = Misleading error message → Replace with better HTTP status code

    关于rest - HTTP 动词 PUT 和 DELETE : 405 Method not allowed - how to allow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56582449/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com