我们的网站有一个 MVC Rest API。最近,实时服务器和我的开发机器都停止接受 DELETE 请求,而是返回 501 Not Implemented 响应。
在我的开发机器(运行 IIS7.5 的 Windows 7)上,解决方案是将以下几行添加到我们的 Web.config 的 system.webServer/handlers 下:
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
...
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE"
type="System.Web.Handlers.TransferRequestHandler"
resourceType="Unspecified" requireAccess="Script"
preCondition="integratedMode,runtimeVersionv4.0" />
但是,这在我们的任何实时服务器上都不起作用;在 Sever 2008 + IIS7.5 上不起作用,在 Server 2012 + IIS8 上也不起作用。
请求过滤中没有设置动词,并且我们的任何实时服务器上都没有安装 WebDAV。
错误页面没有提供更多信息,日志中也没有记录任何内容。如何找出导致 DELETE 请求在 iis7.5 和 iis8 中无法正常工作的原因?
答案1
我知道这是一个“死问题”,但我在尝试为我的问题寻找答案时发现了它。我的 PUT 请求每次都给我 501,我已经在常规配置中添加了 PUT 动词(http://stevemichelotti.com/resolve-404-in-iis-express-for-put-and-delete-verbs/) 并在.vs 目录中进行配置,但没有任何帮助。
后来我重新检查了我的控制器,发现那里有未解决的接口依赖关系,所以我修复了它,现在一切都正常了。所以我想说的是:如果添加动词没有帮助,请检查您的代码是否有错误。