35

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

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

所以看起来我服务器上的某个地方不允许删除动词。但对于我的生活,我无法弄清楚。我已经检查了处理程序映射,处理程序允许 .SVC 扩展名的所有动词。我已禁用 WebDAV。我不太确定还能去哪里看。我在 Windows Server 2008 R2 上使用 IIS 7.5。

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

谢谢,科里

4

4 回答 4

74

万一有人遇到同样的问题。

这是您可以尝试的另一种方法。

在 web.config 中

<system.webServer>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <remove name="WebDAV" /> 
    </handlers>
</system.webServer>
于 2012-12-27T20:19:35.087 回答
29

我只是花了很多时间试图弄清楚为什么我在使用 DELETE 动词时不断收到 405 Method Not Allowed。我读到的所有内容都说要从 IIS 中卸载 WebDAV,但这似乎破坏了 IIS,因为所有站点都给出了 503 错误。我重新安装了它,然后在 IIS 中寻找一些设置。

事实证明,WebDAV 是问题所在,它在 IIS 功能页面上有一个名为“ WebDAV Authoring ”的节点。单击该按钮后,您可以单击WebDAV Settings...以获取属性页面。在请求过滤行为部分中,将Allow Verb Filtering设置为False似乎对我有用(YMMV)。

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

于 2012-02-20T05:11:08.777 回答
1

在 IIS 管理器中打开您网站的处理程序映射

编辑您想要删除的每个处理程序,单击请求限制,选择动词选项卡,然后将 DELETE 添加到“以下选项之一”列表中,或者,如果适合您的问题,允许所有动词。

您可能需要重新启动您的网站和/或重新编译您的代码

于 2013-10-18T20:40:24.480 回答
0

好吧,我不确定这是否真的是我问题的答案,但它确实解决了问题。我只是在 Visual Studio 中启动了一个新项目,这次我使用了我在网上找到的 .NET REST 服务模板。然后我转移了我之前尝试的旧代码并在新项目中使用它。它就像一个魅力。现在所有四个动词都可以正常工作(GET、PUT、POST 和 DELETE)。所以它现在正在工作。

科里

于 2010-12-11T22:21:51.943 回答