10

我正在尝试在 MVC 4 应用程序中使用 PUT,但出现 405 错误。

在我的路由中,我对路由有一个限制,以允许 PUT 和 POST,POST 到端点有效,PUT 失败并显示 405。

我已按照此处的建议ASP.NET Web API 仅在某些服务器上为 PUT 返回 404,而此处ASP.NET MVC 在 HTTP DELETE 请求上出现 405 错误?

我还从 IIS 中删除了 WeDAV,但我仍然收到 405。还有其他建议吗?

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

4

3 回答 3

26

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

这 runAllManagedModulesForAllRequests="true" 有效,但不推荐。

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

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

<modules>
    <remove name="WebDAVModule" />
</modules>
<handlers>
    <remove name="WebDAV" />
</handlers>
于 2012-11-27T05:47:25.347 回答
1

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

于 2012-09-06T15:03:22.250 回答
0

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

<modules runAllManagedModulesForAllRequests="true" />

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

<modules runAllManagedModulesForAllRequests="true">
    <remove name="WebDAVModule" />
</modules>
于 2013-06-11T18:41:24.620 回答