远程服务器返回了一个意外的响应:(405)方法不允许。
似乎我的服务器上某处不允许使用DELETE谓词。但是我却想不出来。我已经检查了处理程序映射,并且处理程序允许.SVC扩展名的所有谓词。我已经禁用了WebDAV。我真的不知道还能从哪里找到答案。我正在使用Windows Server 2008 R2上的IIS 7.5。
(如果需要,我可以提供代码)
谢谢,
Corey
远程服务器返回了一个意外的响应:(405)方法不允许。
似乎我的服务器上某处不允许使用DELETE谓词。但是我却想不出来。我已经检查了处理程序映射,并且处理程序允许.SVC扩展名的所有谓词。我已经禁用了WebDAV。我真的不知道还能从哪里找到答案。我正在使用Windows Server 2008 R2上的IIS 7.5。
(如果需要,我可以提供代码)
谢谢,
Corey
如果有人遇到相同问题。
这里有另一种方法可以尝试。
在web.config文件中。
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
我刚刚花了很多时间试图弄清楚为什么在使用DELETE动词时一直出现405 Method Not Allowed的错误。我读到的所有内容都说要从IIS卸载WebDAV,但似乎这样做会破坏IIS,所有站点都会给出503错误。我重新安装它,然后在IIS中查找一些设置。
事实证明,WebDAV是问题所在,并且在IIS功能页面上有一个名为"WebDAV Authoring"的节点。单击该节点,然后再单击WebDAV Settings...以获取属性页。在请求过滤行为部分,将Allow Verb Filtering设置为False对我来说似乎有效(结果可能因人而异)。
当我搜索解决方案时,这似乎是一个常见的结果,所以我想添加到建议解决方案列表中。
在IIS管理器中打开您网站的Handler Mappings
编辑每个您想要删除的处理程序,点击“请求限制”,选择动词选项卡,然后将DELETE添加到“以下之一”列表中,或者如果适用于您的情况,则允许所有动词。
您可能需要重新启动您的网站和/或重新编译您的代码。
我不确定这是否真正回答了我的问题,但它确实解决了问题。我在Visual Studio中启动了一个新项目,并使用我在网上找到的.NET REST服务模板。然后,我将之前尝试过的旧代码转移到了新项目中并在其中使用。它像魔法一样奏效了。现在所有四个动词(GET、PUT、POST和DELETE)都可以正常工作。所以现在它正在运行。
Corey