ASP.NET Web API-不允许放置和删除动词-IIS 8

标记

我最近从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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有IIS的ASP.NET Core-不允许HTTP动词

具有CORS和AttributeRouting的ASP.NET Web API2不允许HTTP PUT

在ASP.NET Web窗体内使用ASP.NET Web API时出现“方法不允许”错误

从IIS运行ASP.NET MVC 6 Web API

使用AngularJs + Web API,为什么我们需要ASP.NET MVC和IIS?

ASP.NET 5 Web API项目模板不允许使用实体框架

405方法不允许-ASP.NET Web API

方法不允许 405 POST ASP.NET CORE 5.0 WEB API

所有方法在ASP.NET WEB API控制器中均充当HTTP动词(获取,放置,发布和删除)

405在ASP.NET Web API控制器中不允许使用方法选项?

ASP.NET Core 2.0 Web API 抛出 500 错误并且不允许访问 http 帖子

通过IIS发布和托管以.net核心开发的Web API

CORS和ASP.Net Web API

ASP.NET MVC和WEB API

无法获取ASP.NET Core Web API与IIS一起使用

调试asp.net core 3 web api时IIS应用程序池错误

在IIS上托管后,ASP.NET Core 2.2 Web API给出404

Asp.net Core2 Web Api发布到IIS 8.5时始终提供404

将asp.net核心Web API部署到IIS 7.5时出现500错误

如何在IIS 10上托管ASP.NET Web API 2项目

使用IIS Express调试期间配置Asp.Net核心Web API开发环境

在IIS上向Asp.Net(非核心)Web Api错误415进行角度发布

ASP.NET Web API IIS托管REST方法在RethinkDB中产生NULL

无法调用托管在 IIS 10、Windows 10 上的 ASP.NET Web API

IIS 10.0不允许上载.NET Core 2 Web应用程序的文件

ASP.NET Web API 2.0管道和ASP.NET Core Web API管道的区别

ASP.NET核心和就地IIS Web应用程序

是否可以在Windows桌面应用程序中使用不带IIS的ASP.NET Core Web API?

如何向 IIS 添加一个 asp.net web api 应用程序(正确的方法)