網友 Lauyea 提問,照著範例教學:使用 ASP.NET MVC 打造 WebAPI 服務的範例程式實作,卻卡在 PostMan 測試沒反應。

發問有附了詳細圖片,也依循建議加了 HomeController Index() 做過對照,不過我江湖經驗不足,沒在第一時間看出端倪(其實答案早在圖片中),最後下載 Lauyea 放上 Github 的專案重現錯誤後才找出問題,也學到一些東西,特筆記備忘。

狀況為按 F5 測試網站沒問題,但 PostMan 發 Request 時卡住:

我起初糾結在錯誤訊息裡的 Could not get any response 跟 The server couldn't send a response,想說是 IIS Express 因某個神奇原因暴斃沒反應。但真正的關鍵在:URL 是 httqs://localhost:44335,跟 Self-signed SSL certificate are being blocked.

IIS Express 跑 HTTPS 時使用自行簽發的 SSL 憑證,這種非第三方公正 CA 發出的憑證對 PostMan 來說是無效的,認定有資安疑慮而禁止連線。

要解決這個問題,有兩個方向。如錯誤訊息提示,PostMan 有設定可以停用 SSL 憑證檢核,將 IIS Express 的自簽 SSL 憑證視為有效進行連線。(風險是測試其他網站若遇到中間人攻擊會無法察覺,故建議測完恢復啟用較安全)

另一個做法是停用 IIS Express 的 HTTPS 連線,改回一般 http:// :

最後有個疑點,為何 Chrome / IE 測試不會遇到 SSL 憑證無效問題? 原因是 IIS Express Development Cerficate 這張憑證有被加入 Windows 的受信任根 CA 清單,IE 跟 Chrome 依此判定憑證合法,而 PostMan 未採用它做為憑證檢核依據。

使用 Firefox 連線 IIS Express HTTPS 有憑證無效警示,也是類似的原因。(Firefox 有自己的信任 CA 清單,可藉由將 IIS Express Development Cerficate 加入受信任清單解決問題)

Tips of resolving the issue that PostMan can't connect to IIS Expresss due to self-signed SSL certificate.


Comments

# by Lauyea

感謝黑大,早上六點發文辛苦了。

# by Tony

黑大內容中的字打錯囉~httqs --> https

# by Jeffrey

to Tony, 故意的,避免瀏覽器或App雞婆把它們轉成可點選連結。

# by Jason

黑大不好意思,我按照你的程式執行後發現還是沒辦法,可能我太菜了,不確定發生什麼事情,想請黑大指點 有江文章那兩個方法都修正了,但還是沒有結果,並加入Index可以抓到 https://imgur.com/Pd5KZSh https://imgur.com/dSfTL7o 但實際執行沒有顯示出來 https://imgur.com/CDVJPlP

# by Jeffrey

to Jason, 看起來像 Controller 路由沒正確註冊,你是從 Github Clone 專案回去跑測試嗎?

# by Jason

To Jeffrey,不是,重新創專案將程式碼輸入,我擔心打錯還從黑大的急救包再貼入一次,並再次檢查過方法沒有錯字

# by Jeffrey

to Jason,建議也直接 Clone 測一次,若它成功而貼入版失敗,比對二者差異處就破案了。(對照測試是射茶包的經典手法之一)

Post a comment