ASP.NETWebAPI-不允许放置和删除谓词-IIS 8

ASP.NETWebAPI-不允许放置和删除谓词-IIS 8

最近,我将VisualStudio 2010升级到VisualStudio 2012 RC。安装程序还安装IIS 8 Express,VisualStudio现在使用它作为默认Web服务器。

IIS 8正在阻止使用PUT和DELETE谓词的Web API请求。IIS返回405错误,The requested resource does not support http method 'PUT'.

我知道过去人们对此有过异议,在堆栈溢出上有几条关于它的消息。使用IIS7Express,解决方案是卸载WebDAV。不幸的是,我没有办法在IIS 8中做到这一点。

我尝试过从applicationhost.config中编辑WebDAV部分,但这并没有帮助。例如,我删除了<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />从配置文件。

我在这件事上花了太多时间了。必须有一种简单的方法来启用PUT和DELETE?


天涯尽头无女友
浏览 643回答 3
3回答

翻翻过去那场雪

好的。我终于找到了真相。您需要跳过一些圈,以使PUT和DELETE谓词在IIS 8中正确工作。事实上,如果您安装VS 2012发布候选版本并创建一个新的WebAPI项目,您会发现示例PUT和DELETE方法会从盒子中返回404错误。要在WebAPI中使用PUT和DELETE谓词,您需要编辑%userprofile%\documents\iisexpress\config\applicationhost.config并将谓词添加到Extensionless Url处理程序中,如下所示:更改这一行:<add&nbsp;name="ExtensionlessUrl-Integrated-4.0"&nbsp;path="*."&nbsp;verb="GET,HEAD,POST,DEBUG"&nbsp;type="System.Web.Handlers.TransferRequestHandler"&nbsp;preCondition="integratedMode,runtimeVersionv4.0"&nbsp;/>致:<add&nbsp;name="ExtensionlessUrl-Integrated-4.0"&nbsp;path="*."&nbsp;verb="GET,HEAD,POST,DEBUG,PUT,DELETE"&nbsp;type="System.Web.Handlers.TransferRequestHandler"&nbsp;preCondition="integratedMode,runtimeVersionv4.0"&nbsp;/>除此之外,您还应该确保WebDAV不会干扰您的请求。这可以通过注释出applicationhost.config中的以下行来完成。<add&nbsp;name="WebDAVModule"&nbsp;image="%IIS_BIN%\webdav.dll"&nbsp;/><add&nbsp;name="WebDAVModule"&nbsp;/>&nbsp;<add&nbsp;name="WebDAV"&nbsp;path="*"&nbsp;verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK"&nbsp;modules="WebDAVModule"&nbsp;resourceType="Unspecified"&nbsp;requireAccess="None"&nbsp;/>还要注意,默认的WebAPI约定是,您的方法名称应该与调用的HTTP谓词相同。例如,如果发送HTTPDELETE请求,默认情况下,您的方法应该命名为Delete。
打开App,查看更多内容
随时随地看视频慕课网APP