为什么HTTP DELETE动词返回405错误 - 我的IIS 7.5上运行的RESTful WCF服务不允许使用哪种方法?

Cor*_*ett 26 rest wcf http-status-code-405

任何人都可以对此有所了解吗?我觉得我今天浪费了一整天的时间在网上搜索和搜索有关如何执行此操作的任何信息.我创建了一个非常简单的WCF RESTful服务.它基本上是一个概念证明.我有一个简单的数据库,我只是想让它工作,以便我可以查看,创建,更新和删除项目.现在我只有查看和更新​​工作.我稍后会解决这个问题.现在我无法弄清楚为什么删除不起作用.到目前为止,我发现的几乎所有内容都告诉我,我需要禁用WebDAV模块.我做到了,然后我得到PUT工作.但我不能让DELETE工作.每当我尝试通过我的服务调用DELETE时,我会收到以下错误:

远程服务器返回意外响应:(405)方法不允许.

所以它似乎在我的服务器上的某个地方它不允许DELETE动词.但对于我的生活,我无法理解.我已经检查了Handler Mappings,处理程序允许所有动词用于.SVC扩展.我已禁用WebDAV.我不确定在哪里可以看.我在Windows Server 2008 R2上使用IIS 7.5.

(如果能提供帮助,我可以提供代码)

谢谢,科里

max*_*sam 56

如果有人有同样的问题.

这是您可以尝试的另一种方式.

在web.config中

<system.webServer>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <remove name="WebDAV" /> 
    </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

  • 通过IIS GUI,转到**Modules**和**Handler Mappings**删除.谢谢maxisam! (3认同)

小智 26

我花了很多时间试图弄清楚为什么在使用DELETE动词时我一直得到405 Method Not Allowed.我读到的所有内容都表示要从IIS中卸载WebDAV,但这似乎打破了IIS,因为所有网站都提供了503错误.我重新安装它,然后去寻找IIS的一些设置.

事实证明,WebDAV是问题,它在IIS功能页面上有一个名为" WebDAV Authoring " 的节点.单击它可以让您单击WebDAV设置...以获取属性页面.在请求过滤行为一节中,将允许动词过滤设置为False似乎对我有用(YMMV).

在谷歌搜索解决方案时,这似乎是一个流行的结果,所以我想我会添加到建议的解决方案列表中.