ABP PUT、DELETE請求錯誤405.0 - Method Not Allowed 由於使用了無效方法(HTTP 謂詞) 引起客戶端錯誤 No 'Access-Control-Allow-Ori

先請檢查是不是跨域配置問題,請參考博客:http://www.cnblogs.com/donaldtdz/p/7882225.htmlhtml

1、問題描述前端

ABP angular前端部署後,查詢,新增都沒問題,但更新和刪除會報一個跨域問題的錯誤,詳細信息以下:web

PUT http://localhost:8060/api/services/app/User/Update 405 (Method Not Allowed)api

users:1 Failed to load http://localhost:8060/api/services/app/User/Update: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 405.跨域

2、問題分析診斷瀏覽器

首先檢查跨域配置是沒有問題的,查詢數據和新增數據的請求也是沒有問題的,只出如今修改和刪除數據。經過了解ABP Web API請求頭設置,查詢是GET請求,新增是POST請求,而修改是PUT請求,刪除是DELETE請求,IIS服務一般都是支持get和post請求的,由此分析推斷頗有多是IIS不支持put和delete謂詞請求。app

經過百度了一遍對IIS進行新添加謂詞put和delete。 點擊部署應用 -> 出來程序映射 –> aspNetCore(因爲我部署是.Net Core 程序,因此選擇AspNetCoreModule模塊)post

 

雙擊打開測試

經過檢查,aspNetCore自己是支持所有謂詞的,如今確定是和這個謂詞有關,但須要更詳細的錯誤信息。spa

既然不錯信息是跨域,咱們先排除跨域因數的影響,如今看到的跨域錯誤信息頗有多是個假象,咱們經過swagger對web API進行調試。

調試須要配置受權token,請參考博客:http://www.cnblogs.com/donaldtdz/p/7892865.html

先測試接口:/api/services/app/User/GetAll

 

測試結果:經過 200

 

再測試接口:/api/services/app/User/Delete

 

測試結果:

HTTP 錯誤 405.0 - Method Not Allowed

沒法顯示您正在查找的頁面,由於使用了無效方法(HTTP 謂詞)。

 

將response body 用保存用瀏覽器打開以下:

 

查看詳細錯誤信息,咱們開始的推斷是沒有問題的,最後也嘗試了不少方法,最終問題核心在於 模塊WebDAVModule

3、解決方案

在啓用或關閉Windows功能 –> Internet Information Services 關閉WebDAV發佈

 

驗證:修改用戶成功

 

相關文章
相關標籤/搜索