WebApi HTTP Put 405 Method not allowed

最近在写WebApi接口,遇到一些问题,总结一下。这些问题未必跟WebApi有关系,比较琐碎。

服务器升级了IIS,WebApi项目的put接口全部报405

搜索发现解决方案不少,尝试了张善友博客给出的解决方案,问题解决。

IIS7.5上的REST服务的Put操作发生HTTP Error 405.0 - Method Not Allowed 解决方法

WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝、移动、删除等。在IIS 7.0中,WebDAV是作为独立扩展模块,需要单独进行下载,而IIS 7.5中将集成WebDAV,然而WebDav把Put,Delete给咔嚓了。所以在IIS 7.5上部署的RESTful服务(WCF Data Service,WCF Rest Service,ASP.NET Web API,ASP.NET MVC)就悲剧了,当发送Put请求就会发生HTTP Error 405.0 – Method Not Allowed错误,解决方法也很简单,在Web.config里面加入如下设置:

1
2
3
4
5
6
7
8
<system.webServer> 
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>

http://brockallen.com/2012/10/18/cors-iis-and-webdav/

添加配置之后,出现了另一个问题
两个Route
一个post的Route,形如Route["A/B"],另一个get的Route形如Route["A/B/{id}"]
会报错:在多个Controller里有相同的Route。
不知道是不是修改配置之后导致的问题。
CSND博客中还有一篇文章介绍如何解决405,配置修改略有不同,未尝试过,先记录在这里
http://blog.csdn.net/taoerchun/article/details/57511009

0%