上周临时支援别的专案,要将古老专案取 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 的范例了。

本文同步发表至我的Blog