MVC 4. IIS 7.5 PUT 返回405错误。

10
我正在尝试在MVC 4应用程序中使用PUT方法,但是遇到了405错误。在我的路由中,我对路由进行了约束以允许使用PUT和POST方法,POST请求有效,而PUT失败并报错405。我遵循了以下建议ASP.NET Web API 返回404仅适用于某些服务器上的PUTASP.NET MVC 在HTTP DELETE请求上收到405错误?。我还从IIS中删除了WeDAV,但仍然出现405错误。有没有其他建议可以提供?我在IIS 8(使用Visual Studio 2012)上也遇到了完全相同的问题,对此我遵循了这个建议ASP.NET Web API - PUT & DELETE Verbs不允许 - IIS 8,但仍然无法解决问题。
3个回答

26

我的托管提供商无法卸载WebDAV,因为这会影响到每个人。

这个 runAllManagedModulesForAllRequests="true" 可以工作,但不建议使用。

许多修复措施包括移除 WebDAVModule 模块,但那些方法仍然没有起作用。我还要去除处理程序,最终我可以使用所有的动词 POST GET PUT DELETE。

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

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

1
我的web.config已经设置了runAllManagedModulesForAllRequests="true"。在上面添加删除WebDAV的代码行对我来说非常有效。 - James Becwar
我以为我已经做过了,但我只是删除了处理程序而不是模块。谢谢! - Anders Bornholm

1

如我上面所说,我正在使用WebAPI,而且似乎WebAPI对于哪些动词映射到哪些方法比较挑剔。最终,我不得不在适当的方法中添加[HttpXXX]属性(HttpPut、Get、Delete和Post),以使路由按照我预期的方式工作。


0
放下我的两分钱... 在 IIS 下点击我的网站时,'WebDAV 作者规则' 显示为 'IIS' 下的最后一个条目。双击它会在右侧显示“WebDAV 功能已被禁用。”的警报,并提供“启用 WebDAV”的链接,但仍然无法工作。我遵循了 Stanomatic 上面的建议,处理程序部分并不重要,我的模块看起来像这样:
<modules runAllManagedModulesForAllRequests="true" />

我刚刚添加了“remove”并解决了我的问题:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接