【问题标题】:ASP.NET web API HTTP Delete 405 Method Not AllowedASP.NET Web API HTTP 删除 405 方法不允许
【发布时间】:2013-12-25 02:07:18
【问题描述】:

我已经使用过 Web API,并且遇到了很多问题,例如发布多个参数。我升级到 WebApi2 以使用路由属性,现在遇到如下问题:

"message":"The requested resource does not support http method 'DELETE'."

我花了一整天的时间搜索 Stack Overflow 和网络来解决问题:

  • 删除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"
  • 在谷歌上搜索了必要的帮助here

有人可以指导我吗?

【问题讨论】:

  • 您的标题需要更具描述性
  • 给我们一个搜索查询(在第 5 个中)的问题是,我们是否要相信您已经访问了该查询返回的所有 100 万个结果(至少对我来说,今天)?如果没有,它对我们有什么帮助?
  • 我从搜索结果中尝试了上面提到的四个项目
  • 所以没有答案?太棒了,无中生有一个大问题

标签: asp.net-web-api


【解决方案1】:

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,你救了我的命。谢谢回答
【解决方案2】:

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

[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'
});

【讨论】:

  • 我认为您需要上述答案中的所有内容,并正确提出请求
  • 这就是答案
【解决方案3】:

我遇到了同样的问题。将以下代码添加到您的 web.config 应该可以解决 system.webserver 部分下的问题:

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

【讨论】:

  • --> 替我做了:
  • 也为我工作!谢谢
  • 也为我工作,这很奇怪,因为该问题是在应用程序在开发服务器上正常运行数周后出现的。对不同页面的不相关更新不知何故导致了此错误,但这已解决!
猜你喜欢
  • 2018-02-04
  • 2015-06-20
  • 2018-05-27
  • 2020-05-04
  • 2014-06-21
  • 2013-03-21
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
相关资源
最近更新 更多