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(一般情況下我們不會用到該功能)。移除有如下幾種方法:
- 直接從系統中移除WebDAV Publish的整個功能(參考上面打開WebDAV Publish的截圖)
- 在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/