部署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/
相關文章
相關標籤/搜索