先請檢查是否是跨域配置問題,請參考博客:http://www.cnblogs.com/donaldtdz/p/7882225.html 一、問題描述 ABP angular前端部署後,查詢,新增都沒問題,但更新和刪除會報一個跨域問題的錯誤,詳細信息如下: PUT http://localhost:8 ...
先請檢查是否是跨域配置問題,請參考博客:http://www.cnblogs.com/donaldtdz/p/7882225.html
一、問題描述
ABP angular前端部署後,查詢,新增都沒問題,但更新和刪除會報一個跨域問題的錯誤,詳細信息如下:
PUT http://localhost:8060/api/services/app/User/Update 405 (Method Not Allowed)
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.
二、問題分析診斷
首先檢查跨域配置是沒有問題的,查詢數據和新增數據的請求也是沒有問題的,只出現在修改和刪除數據。通過瞭解ABP Web API請求頭設置,查詢是GET請求,新增是POST請求,而修改是PUT請求,刪除是DELETE請求,IIS服務通常都是支持get和post請求的,由此分析推斷很有可能是IIS不支持put和delete謂詞請求。
通過百度了一遍對IIS進行新添加謂詞put和delete。 點擊部署應用 -> 出來程式映射 –> aspNetCore(由於我部署是.Net Core 程式,所以選擇AspNetCoreModule模塊)
雙擊打開
通過檢查,aspNetCore本身是支持全部謂詞的,現在肯定是和這個謂詞有關,但需要更詳細的錯誤信息。
既然不錯信息是跨域,我們先排除跨域因數的影響,現在看到的跨域錯誤信息很有可能是個假象,我們通過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
三、解決方案
在啟用或關閉Windows功能 –> Internet Information Services 關閉WebDAV發佈
驗證:修改用戶成功