上周臨時支援別的專案,要將古老專案取 Call WebService 的程式改寫成可以定時跑的 Windows 排程。
確認客戶的 Server 有 .NET Framework 4.7 的 runtime 後,直覺反應用 Visual Studio 建個 Console App 專案,從原專案程式碼搬過來再改參數就完事了。
誰知竟然出現了「WebRequest.Create(string)已過時」的錯誤!原專案沒有啊!!!
搜尋了一下網路找到「WebRequest、WebClient 和 ServicePoint 已淘汰」
再檢查專案才發現 Console App 開到 .NET 8 了…唉~~~常常回個話就忘了要幹的事…Orz
放是再開了.NET Framework 4.7 及 4.8 的專案,果然 WebRequest.Create(string) 就沒有過時提示了。
接下來照著規劃改寫…耶…不出意外又出意外了,原專案程式碼幾乎沒有例外處理,而且改參數取得的資料竟然有濾不掉的控制字元「」!!!
結果搞了 2 天才把這簡單任務(老電影動作戲好看,雖然劇情有點瞎…)完成。
結束後對 WebRequest 為什麼被棄用,以及官方要改用 HTTPClient 做了些整理,簡單說明如下:
- .NET 6 後棄用 WebRequest 並建議改用 HTTPClient。
- 主要差異是:WebRequest 是基於同步操作,而 HttpClient 支援非同步且效能較高。
PS. 若是用 PostMan Call WebAPI 或 WebService 並且產生 C# Code,印象中老早也提供 HttpClient 的範例了。
最後更新日期:2024-12-08
Views: 0
Views: 0
發佈留言