ASP.NET web API HTTP Delete 405 Method Not Allowed
我已经使用了WebAPI,遇到了很多问题,比如发布多个参数。我升级到webapi2以使用路由属性,现在遇到如下问题:
我花了一整天的时间搜索堆栈溢出和Web来解决这个问题:
- 删除
webdav 。 - 在
http protocol 中,允许所有get,put,post,delete 。 - 添加了
[HTTPDelete] 属性 - 增加
name="ExtensionlessUrlHandler-Integrated-4.0" path="*." 。verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" - 在谷歌搜索必要的帮助
有人能指导我吗?
我也有同样的问题。在web.config中添加以下代码可以解决
1 2 3 4 | <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules runAllManagedModulesForAllRequests="true"> <remove name="WebDAVModule"/> |
我也有同样的问题,因为我的控制器是这样的:
1 2 3 4 5 | [HttpDelete] public HttpResponseMessage Delete(string Id) { .... } |
在客户机上,我使用发送ID作为请求主体:
1 2 3 4 5 6 7 8 | var url = '/api/upload'; var data = JSON.stringify({ 'Id': id }); // <-- In the body $.ajax({ url: url, type: 'DELETE', data: data, // <-- in the body contentType: 'application/json' }) |
当我将客户端更改为将其用作URL参数时,它工作正常:
1 2 3 4 5 6 | var url = '/api/upload/' + id; // <- In the URL $.ajax({ url: url, type: 'DELETE', contentType: 'application/json' }); |
删除动词的javascript代码必须如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 | $.ajax({ **url:"/api/SomeController/" + id,** type:"DELETE", dataType:"json", success: function(data, statusText) { alert(data); }, error: function(request, textStatus, error) { alert(error); debugger; } }); |
不要用这种东西,
1 2 3 | ... data: {id:id} ... |
当你使用post方法的时候。
将此添加到我的Web API
1 2 3 4 | public HttpResponseMessage Options() { return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; } |
解决了我的问题。