0%

【IIS】405 不允許用來存取此網頁的HTTP 指令動詞

上線WebAPI專案的時候,發現只要用非Get與Post的動詞呼叫API,就會得到這個405的錯誤,最後上網找了一下資料跟請教同事,紀錄一下狀況。

首先如果IIS的的WebDAV功能有被啟動,那這些Http動詞就會被擋掉。但我同時也懷疑是安裝WebDeploy會開啟這個功能(目前沒有證實),會這樣懷疑是因為這個服務之前是沒問題的,但當天安裝了WebDeploy要建置CI環境時,這服務相關動詞就掛了。
但當天安裝WebDeploy的多台機器中,有些裝完也沒啟動WebDAV,現在不知道到底是需要特定環境或設定會開啟這個功能,還是一開始安裝IIS就勾選啟動了這功能,總之要小心就是了

[![](https://4.bp.blogspot.com/-HKu_UbhGZWg/WDubNA_FOUI/AAAAAAAAIBw/he7Kx_8_nh8GaCzrFKOzUgIn2zOeodTTwCLcB/s640/%25E6%259C%25AA%25E5%2591%25BD%25E5%2590%258D.png)](https://4.bp.blogspot.com/-HKu_UbhGZWg/WDubNA_FOUI/AAAAAAAAIBw/he7Kx_8_nh8GaCzrFKOzUgIn2zOeodTTwCLcB/s1600/%25E6%259C%25AA%25E5%2591%25BD%25E5%2590%258D.png)

如果發現WebDAV被啟動,同時發生405錯誤時,在該網站的WebConfig加上以下區段來解決。

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