为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

天涯尽头无女友 2019-06-26 13:14:03
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?
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

好的。我终于找到了真相。您需要跳过一些圈,以使PUT和DELETE谓词在IIS 8中正确工作。事实上,如果您安装VS 2012发布候选版本并创建一个新的WebAPI项目,您会发现示例PUT和DELETE方法会从盒子中返回404错误。

要在WebAPI中使用PUT和DELETE谓词,您需要编辑%userprofile%\documents\iisexpress\config\applicationhost.config并将谓词添加到Extensionless Url处理程序中,如下所示:

更改这一行:

<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" />

还要注意,默认的WebAPI约定是,您的方法名称应该与调用的HTTP谓词相同。例如,如果发送HTTPDELETE请求,默认情况下,您的方法应该命名为Delete。


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 623 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信