ASP.NET Web API HTTP删除 405 方法不允许

13
我已经使用过Web API,遇到了很多问题,例如发布多个参数等问题。为了使用路由属性,我升级到了WebApi2,但现在出现了以下问题:
"message":"The requested resource does not support http method 'DELETE'."

我花了一整天的时间在Stack Overflow和网络上搜索解决方法:
  • 移除webdav
  • http协议中允许所有的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"
  • 这里搜索了必要的帮助

有人能指导我吗?


你的标题需要更具描述性。 - James A Mohler
在第5个问题中提供搜索查询的问题是,我们是否应该相信您已访问了该查询返回的所有100万个结果(至少对我来说是今天)?如果不是,那么这如何帮助我们帮助您呢? - Damien_The_Unbeliever
我尝试了上述搜索结果中提到的四个项目。 - user2997115
所以没有答案吗?令人惊讶,一个小问题变成了大问题。 - Toolkit
可能是设置窗体不透明度时应该使用小数还是双精度?的重复问题。 - Alessandro Minneci
3个回答

25

我遇到了同样的问题。在你的 web.config 中,在 system.webserver 部分下添加以下代码应该可以解决这个问题:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule"/>

3
去掉这行代码:<remove name="WebDAVModule"/>。 - Legends
我也试过了,谢谢。 - Sheikh M. Haris
我也遇到了同样的问题,非常奇怪,因为这个问题在开发服务器上运行良好了几周后才出现。一个与此无关的不同页面的更新不知何故导致了这个错误,但是这个方法解决了它! - cklimowski

11

我也遇到了相同的问题,因为我的控制器是这样的:

[HttpDelete]
public HttpResponseMessage Delete(string Id)
{
     ....
}

在客户端上,我使用发送ID作为请求体:

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参数时,它就起作用了:

var url = '/api/upload/' + id; // <- In the URL
$.ajax({
    url: url,
    type: 'DELETE',
    contentType: 'application/json'
});

我认为你需要以上回答中的所有内容,再加上正确发出请求。 - ncubica
1
这是答案 - toddmillernyc

4

DELETE请求的JavaScript代码必须如下所示:

$.ajax({
    **url: "/api/SomeController/" + id,**
    type: "DELETE",
    dataType: "json",
    success: function(data, statusText) {
        alert(data);
    },
    error: function(request, textStatus, error) {
        alert(error);
        debugger;
    }
});

不要使用这样的东西,
...
data: {id:id}
...

当您使用POST方法时,情况也是如此。


Pavel Kharibin,你救了我的一天。感谢你的回答。 - user2934829

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接