在 Web Api 中使用 Put 或 Delete 方法时,我有啥替代方法来避免 405 Method Not Allowed 错误?

Posted

技术标签:

【中文标题】在 Web Api 中使用 Put 或 Delete 方法时,我有啥替代方法来避免 405 Method Not Allowed 错误?【英文标题】:What alternative do I have to avoid 405 Method Not Allowed error when using Put or Delete method in Web Api?在 Web Api 中使用 Put 或 Delete 方法时,我有什么替代方法来避免 405 Method Not Allowed 错误? 【发布时间】:2019-01-02 07:45:12 【问题描述】:

在 Web API 中使用 Put 或 Delete 方法时,我有什么替代方法来避免 405 Method Not Allowed 错误?

我知道有很多解决方案特别提到从 IIS 中删除 WebDAV,或从 Web.config 或其他类似选项中禁用它 例如: "405 method not allowed" in IIS7.5 for "PUT" method 和 ASP.NET Web API - PUT & DELETE Verbs Not Allowed - IIS 8

但我遇到过多种情况,这些解决方案要么不可行,要么根本不起作用。

【问题讨论】:

共享环境,例如人们实际使用 WebDAV 的地方,但就像我提到的,在某些情况下也不起作用。 【参考方案1】:

另一种方法是使用 Post 而不是 Put 或 Delete 方法,您可以通过向函数添加一些装饰器来做到这一点:

例如:

    [HttpPost]
    [Route("api/Users/Update")]
    [ResponseType(typeof(void))]
    public IHttpActionResult PutUser(User user)
    ...

[HttpPost] 装饰器只是表明该函数是一个 Post。 并且 Route 将覆盖 WebApiConfig.cs 中的默认路由。

我希望这对将来的人来说更容易。

【讨论】:

以上是关于在 Web Api 中使用 Put 或 Delete 方法时,我有啥替代方法来避免 405 Method Not Allowed 错误?的主要内容,如果未能解决你的问题,请参考以下文章

在Web Api中实现Http方法(Get,Put,Post,Delete)

asp.net mvc 和 web api 哪个更好 Http POST 或 PUT

http.put 在使用 Chrome 但不是 IE 的 Angular 2 / Web API 中抛出错误

如何从 ASP.NET MVC 到 ASP.NET Core Web API 的 PUT?

如何在使用 AngularJS/Web API/Angular-ui-router 的指令中调用 $http.put 服务后更新页面

ASP.NET Core Web API - PUT 与 PATCH