如何让 OData DELETE 工作?

Posted

技术标签:

【中文标题】如何让 OData DELETE 工作?【英文标题】:How can I get OData DELETE to work? 【发布时间】:2011-10-05 13:06:20 【问题描述】:

我创建了一个 OData 服务(WCF 数据服务)和一个消费者来测试它。

以前,当我尝试删除时,我收到了 WebDAV 405 错误消息“不允许使用方法”。

于是我google了一下,发现:

http://nikhilthaker86.wordpress.com/2010/03/27/issue-hosting-restful-services-on-iis-7/

我按照说明在 IIS 7 中从我的网站(服务)中删除了 WebDav 模块。

现在我收到此错误消息:

“HTTP 错误 500.21 - 内部服务器错误

处理程序“WebDAV”的模块列表中有一个错误模块“WebDAVModule”

模块:IIS Web 核心 通知:ExecuteRequestHandler"

如果您有解决方案可以解决此问题,我将不胜感激...否则,如果您是 IIS 专家,并且您在想“这个人不知道自己在做什么”,请指出一些有用的在线阅读材料的方向。

提前致谢。

【问题讨论】:

【参考方案1】:

WebDAV 模块将阻止 IIS 的 DELETE 和 PUT(更新)动词。您可以卸载 WebDAV(推荐)或直接从站点的处理程序中删除它。更多细节可以在这里找到:http://forums.iis.net/t/1166025.aspx

执行此操作的一种方法是将以下 remove 行添加到您网站的 web.config:

<system.webServer>
    <modules>
        <remove name="WebDAVModule" />
    </modules>
    <handlers>
        <remove name="WebDAV" />
    </handlers>
</system.webServer>

【讨论】:

谢谢。按照您提供的链接中的网站说明进行操作后,它起作用了!运行 IIS7,选择站点,从功能视图中打开模块,删除 WebDAV,从功能视图中打开处理程序映射,删除 WebDAV。重启 IIS7。 这也解决了我们的问题。我从@TRayburn 提供的链接中添加了 web.config 示例,因为我认为它比手动方法更好。 这让我发疯了。我删除了WebDAVModule,但忘记了处理程序。在我删除 WebDAV 之前,它会抛出 500 个错误。 只是添加到这个答案:来自 IIS 媒体服务的 LiveStreamingHandler 也可能会阻止 DELETE 和 PUT 动词。

以上是关于如何让 OData DELETE 工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Apache Tomcat 接受 DELETE 方法

MarkLogic 的“xdmp:collection-delete”是如何工作的?

关于 "DONT_DELETE_DATA" 的一些问题,它是如何工作的,以及应用程序如何使用它

手动 Windows 身份验证

如何发送一个PUT / DELETE请求jQuery的

如何发送一个PUT / DELETE请求jQuery的