如何使OData的DELETE方法生效?

15

我创建了一个 OData 服务(WCF Data Service)和一个用于测试的消费者。

之前,当我尝试删除时,会出现 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 Core 通知:ExecuteRequestHandler”

如果您有解决这个问题的方案,我会非常感激...否则,如果您是 IIS 大师,并且认为“这家伙不知道自己在做什么”,请指点我一些有用的在线阅读材料。

提前致谢。

1个回答

36
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。 - Stephen Oberauer
1
这也解决了我们的问题。我添加了@TRayburn提供链接中的web.config示例,因为我认为它比手动方法更好。 - Craig Stuntz
3
这让我感到非常烦恼。我已经移除了“WebDAVModule”,但是忘记了处理程序。一直抛出500错误,直到我也移除了“WebDAV”。 - CBono
1
只是为了补充这个答案:来自IIS媒体服务的LiveStreamingHandler也可能会阻止DELETE和PUT动词。 - Malyngo

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