在 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 服务后更新页面