我最近从Visual Studio 2010升级到了Visual Studio 2012 RC。安装程序还将安装IIS 8 Express,Visual Studio现在将其用作默认Web服务器。
IIS 8阻止了我的使用PUT AND DELETE动词的WEB API请求。IIS返回405错误,The requested resource does not support http method 'PUT'
。
我知道过去人们对此有疑问,并且在Stack Overflow上有关于它的几条消息。使用IIS 7 Express,解决方案是卸载WebDav。不幸的是,我看不到使用IIS 8的任何方法。
我尝试从applicationhost.config中删除WebDav部分,但这并没有帮助。例如,我<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />
从配置文件中删除了。
我花了太长时间了。必须有一种简单的方法来启用PUT和DELETE吗?
好的。我终于明白了这一点。您需要跳过一些技巧,以使PUT和DELETE动词与IIS8一起正常工作。实际上,如果您安装VS 2012的候选发行版并创建一个新的WEB API项目,您会发现示例PUT和DELETE方法可以立即返回404错误。
要将PUT和DELETE动词与Web API一起使用,您需要编辑%userprofile%\ documents \ iisexpress \ config \ applicationhost.config并将这些动词添加到ExtensionlessUrl处理程序中,如下所示:
更改此行:
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
至:
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
除上述内容外,您还应确保WebDAV不会干扰您的请求。这可以通过在applicationhost.config中注释掉以下几行来完成。
<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />
<add name="WebDAVModule" />
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />
还应注意,默认的Web API约定是您的方法名称应与调用的HTTP动词相同。例如,如果您要发送HTTP删除请求,则默认情况下,您的方法应命名为Delete。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句