部署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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM