[ASP.net] 在 Visual Studio 2022 加入傳統 ASMX Web Service "要求失敗,回應空白" 錯誤與解決方法
2025-09-26
最近在專案中,需要連線到一個舊系統的 ASMX Web Service,網址大概像這樣:
https://xxx.sample.com/service.asmx
結果在 Visual Studio 2022 新增「Web 參考」後,呼叫服務卻一直出現以下錯誤:
要求失敗,回應空白。
於 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
於 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
問題原因
在 VS2022 下,加入傳統 ASMX Web Service 時,工具產生的 Web References 會有兩個常見問題:
URL 被自動降級為 HTTP
原始設定是 https://...,但 VS2022 有時候會莫名產生成 http://...,造成請求錯誤。
遇到重新導向 (Redirect)
有些服務會自動將 http:// 轉址到 https://,結果 .NET 舊版的 SOAP Client 並不一定能正確處理,導致回應失敗。
這就是為什麼會看到「要求失敗,回應空白」的錯誤。
解決方法
手動修改 Web.config
在 VS2022 產生的設定檔中,找到 applicationSettings 區塊,把服務 URL 修正成正確的 https。
範例如下:
<applicationSettings>
<ShinJaiYuan.Properties.Settings>
<setting name="ShinJaiYuan_FagoService_sjy" serializeAs="String">
<value>https://www.sample.com/service.asmx</value>
</setting>
</ShinJaiYuan.Properties.Settings>
</applicationSettings>
這樣就能避免呼叫時自動用到 http://
這就這莫名撞牆,網路上沒有找到有效答案,所以想說筆記一下,給有碰到的人 :)