2024年12月23日 星期一

[研究]ASP.NET, RestSharp v106 升級 v112

[研究]RestSharp v106 升級 v112

2024-12-23, 2025-01-24 更新

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

RestSharp v106 升級 v107 時,碰很多釘子;v110 好像又改不少;實際測試 v106 直接 v112 好像比較容易了。

********************************************************************************+

error CS0117: 'Method' 未包含 'POST' 的定義

RestRequest 現在需要明確地將 HTTP 方法作為參數傳遞,而不是使用 Method.POST。

RestSharp 在 v110 版本後做了一些重大改變,RestRequest 構造函式不再直接接受 Method 作為參數,而需要使用其他方式來指定 HTTP 方法。

v106

var request = new RestRequest(Method.POST);  

v112 改為 (注意大小寫)

var request = new RestRequest();  
request.Method = Method.Post;

********************************************************************************

在 RestSharp v110 及更高版本中,IRestResponse 已被移除,改為使用 RestResponse 類型。

v106

IRestResponse response = client.Execute(request);  

v110改為

RestResponse response = client.Execute(request);  

********************************************************************************

v106

if (localIP.HasValue())  

RestSharp.106.15.0 -> RestSharp.112.1.0 後編譯

error CS1061: 'string' 未包含 'HasValue' 的定義,也找不到可接受類型 'string' 第一個引數的可存取擴充方法 'HasValue' (是否遺漏 using 指示詞或組件參考?)

v110改為

if (!string.IsNullOrEmpty(localIP))  


若不想逐一修改,另一種方法,擴充 string 有 HasValue() 方法


public static class StringExtensions { /// <summary> /// 判斷字串是否有值(非 null 或非空白) /// </summary> /// <param name="input">要檢查的字串</param> /// <returns>若字串有值,則回傳 true;否則回傳 false</returns> public static bool HasValue(this string input) { return !string.IsNullOrEmpty(input); } }

註:HasValue() 問題,在某方案這樣改後,編譯/重建 (Compile / Build) 可通過,但實際執行有問題,查到後面,問題不在 HasValue(),而是回傳的 RestResponse response 格式和之前可能有差異。

********************************************************************************

(完)

相關

沒有留言:

張貼留言