部署Web API后Delete请求总是报 405(Method Not Allowed)解决办法

WebDAV                                    
安装IIS的时候如果选择了WebDAV(Web Distribution Authorization Versioning) Publish,则所有的Web Site默认会应用WebDAV Module和WebDAV Handler.
 
WebDAV是基于HTTP协议的扩展,添加了很多Method用于管理服务器上的文件。详见:https://baike.baidu.com/item/WebDAV/4610909?fr=aladdin
 
WebDAV Module和WebDAV Handler
WebDAV Handler的默认配置是处理如下 Method:PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK。(可以参考%userprofile%/documents/iisexpress/config/applicationhost.config中的配置)因此PUT和DELETE请求会被Dispatch给WebDAV Handler来处理,但是我们一般不会Enable WebDAV功能。因此Delete和Put请求会被拒绝。
 
 
解决办法                                  
既然根本原因是WebDAV,最直接的解决办法就是移除WebDAV(一般情况下我们不会用到该功能)。移除有如下几种方法:
  1. 直接从系统中移除WebDAV Publish的整个功能(参考上面打开WebDAV Publish的截图)
  2. 在Web Site的web.config中移除WebDAVModule和WebDAVHandler
    <system.webServer>
        <modules>
          <remove name=“WebDAVModule”/>
       </modules>
       <handlers>
         <remove name=“WebDAV”/>
       </handlers>
    </system.webServer>
顺便提一下,关于asp.net的配置schema参见https://docs.microsoft.com/en-us/iis/configuration/system.webserver/handlers/
posted @ 2017-12-23 22:34  self.refactoring  阅读(2656)  评论(0编辑  收藏  举报