MVC 4. IIS 7.5 PUT返回405

时间:2012-09-05 07:15:11

标签: asp.net-mvc iis-7.5 http-status-code-405 http-put iis-8

我正在尝试在MVC 4应用程序中使用PUT,我收到405错误。

在我的路由中,我对允许PUT和POST的路由有约束,POST到端点工作,PUT失败,带有405.

我已按照此处的建议ASP.NET Web API returns 404 for PUT only on some servers和此处ASP.NET MVC got 405 error on HTTP DELETE request?

我也从IIS中删除了WeDAV,但我仍然得到405.还有其他任何建议吗?

我在IIS 8(使用Visual Studio 2012)上也遇到了完全相同的问题,因为我遵循了这个建议ASP.NET Web API - PUT & DELETE Verbs Not Allowed - IIS 8但仍然没有运气

3 个答案:

答案 0 :(得分:25)

我的托管服务提供商无法卸载WebDAV,因为这会影响所有人。

这个,runAllManagedModulesForAllRequests =“true”,有效但不推荐。

许多修复包括删除WebDAVModule的模块,但仍然无效。我也删除了处理程序,最后我可以使用所有动词POST GET PUT DELETE。

删除模块和处理程序中的WebDAVModule和WebDAV。

<modules>
    <remove name="WebDAVModule" />
</modules>
<handlers>
    <remove name="WebDAV" />
</handlers>

答案 1 :(得分:1)

正如我上面所说,我正在使用WebAPI,看起来WebAPI对于哪些动词映射到哪些方法都很“挑剔”。我最终不得不将[HttpXXX]属性(HttpPut,Get,Delete和Post)添加到适当的方法中,以使路由按照我的预期运行。

答案 2 :(得分:0)

投入我的2美分...点击iis下的我的网站显示'WebDAV创作规则'作为'IIS'下的最后一个条目。双击显示“WebDAV功能已被禁用”。在右侧发出警报,并且有一个“启用WebDAV”的链接,但它仍然无法正常工作。我按照上面的Stanomatic建议,处理程序部分没关系,我的模块看起来像这样:

<modules runAllManagedModulesForAllRequests="true" />

我刚刚在其中添加了删除并解决了我的问题:

<modules runAllManagedModulesForAllRequests="true">
    <remove name="WebDAVModule" />
</modules>