最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#解決“因為算法不同,客戶端和服務(wù)器無法通信”的問題

 更新時間:2024年12月24日 09:36:17   作者:初九之潛龍勿用  
實現(xiàn)微信退款功能,我們需要在微信支付商戶后臺申請安全證書,并調(diào)用退款A(yù)PI URL,在調(diào)試過程中為增添返回調(diào)試信息屬性,調(diào)試一切正常,但再次覆蓋的時候,調(diào)用顯示為 “ 因為算法不同,客戶端和服務(wù)器無法通信,” ,本文介紹了C#解決因為算法不同,客戶端和服務(wù)器無法通信的問題

故障現(xiàn)象

實現(xiàn)微信退款功能,我們需要在微信支付商戶后臺申請安全證書,并調(diào)用退款A(yù)PI URL。在調(diào)試過程中為增添返回調(diào)試信息屬性,重新對.net FrameWorkd 類庫進行編譯并部署,調(diào)試一切正常,但再次覆蓋的時候,調(diào)用顯示為 “ 因為算法不同,客戶端和服務(wù)器無法通信。” ,系統(tǒng)返回錯誤:

類似調(diào)用如下代碼:

string cert = @"D:\wxpay\apiclient_cert.p12";
 
string password = "14302";
 
string post_data = getRefundOrderXml(refundorder, key);
string request_data = PostXmlAndCertToUrl(RefundOrderUrl, post_data,cert,password);

問題出在 PostXmlAndCertToUrl 調(diào)用上,cert 為申請證書的存放位置,passwrd 為證書密碼。

開發(fā)運行環(huán)境

操作系統(tǒng): Windows Server 2019 DataCenter

.net版本: .netFramework4.7.2 

開發(fā)工具:VS2019  C#

解決

System.Net.ServicePointManager.SecurityProtocol 屬性可選擇安全套接字層 (SSL) 或傳輸層安全 (TLS) 協(xié)議的版本,可能是由于協(xié)議版本不匹配造成的此原因,通過在Page_Load 服務(wù)器事件添加如下語句,問題解決:

void Page_Load(Object sender, EventArgs e)
{
     System.Net.ServicePointManager.SecurityProtocol = 
System.Net.SecurityProtocolType.Tls | 
System.Net.SecurityProtocolType.Tls11 | 
System.Net.SecurityProtocolType.Tls12;
 
}  

實現(xiàn)攜帶證書的 API URL調(diào)用

PostXmlAndCertToUrl 實現(xiàn)了攜帶安全證書訪問 API 的能力,說明見下表:

序號參數(shù)名類型說明
1urlstring要訪問的 API URL 地址
2post_datastring要 POST 的指定規(guī)則內(nèi)容 
3certstringAPI 安全證書存放存儲的全路徑地址
4passwordstring證書密碼

實現(xiàn)代碼如下:

public string PostXmlAndCertToUrl(string url, string postData,string cert,string password)
{
     string resp = string.Empty;
     ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
System.Security.Cryptography.X509Certificates.X509Certificate2 cer = new System.Security.Cryptography.X509Certificates.X509Certificate2(cert, password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags.PersistKeySet | System.Security.Cryptography.X509Certificates.X509KeyStorageFlags.MachineKeySet);
 
     HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
     webrequest.ClientCertificates.Add(cer);
     webrequest.Method = "post";
     webrequest.ContentType = "application/x-www-form-urlencoded";
     webrequest.ContentLength = postData.Length;
     HttpWebResponse response = null;
     try
     {
        StreamWriter swRequestWriter = new StreamWriter(webrequest.GetRequestStream());
        swRequestWriter.Write(postData);
 
        if (swRequestWriter != null)
            swRequestWriter.Close();
 
            response = (HttpWebResponse)webrequest.GetResponse();
            using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
            {
              resp = reader.ReadToEnd();
            }
     }
     catch (Exception exp)
     {
           throw exp;
                    
     }
     finally
     {
           if (response != null)
               response.Close();
     }
     return resp;
}
 
private static bool CheckValidationResult(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors errors)
{
       if (errors == System.Net.Security.SslPolicyErrors.None)
           return true;
       return false;
}

到此這篇關(guān)于C#解決“因為算法不同,客戶端和服務(wù)器無法通信”的問題的文章就介紹到這了,更多相關(guān)C#客戶端和服務(wù)器無法通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C# 控件屬性和InitializeComponent()關(guān)系案例詳解

    C# 控件屬性和InitializeComponent()關(guān)系案例詳解

    這篇文章主要介紹了C# 控件屬性和InitializeComponent()關(guān)系案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C#中的Lazy如何使用詳解

    C#中的Lazy如何使用詳解

    這篇文章主要給大家介紹了C#中Lazy如何使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-12-12
  • C#讀取本地網(wǎng)絡(luò)配置信息全攻略分享

    C#讀取本地網(wǎng)絡(luò)配置信息全攻略分享

    在當今數(shù)字化時代,網(wǎng)絡(luò)已深度融入我們生活與工作的方方面面,對于軟件開發(fā)而言,掌握本地計算機的網(wǎng)絡(luò)配置信息顯得尤為關(guān)鍵,而在 C# 編程的世界里,我們又該如何巧妙地讀取這些至關(guān)重要的本地網(wǎng)絡(luò)配置信息呢?接下來,就讓我們一同踏上探索之旅
    2025-01-01
  • WPF ComboBox獲取當前選擇值的實例詳解

    WPF ComboBox獲取當前選擇值的實例詳解

    這篇文章主要介紹了WPF ComboBox獲取當前選擇值的實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • c#入門之類型轉(zhuǎn)換詳解

    c#入門之類型轉(zhuǎn)換詳解

    這篇文章主要介紹了c#的類型轉(zhuǎn)換詳解,類型轉(zhuǎn)換分兩種形式:隱式轉(zhuǎn)換、顯示轉(zhuǎn)換,下面是詳細介紹
    2014-04-04
  • C# 9.0 特性全面總結(jié)

    C# 9.0 特性全面總結(jié)

    這篇文章主要介紹了C# 9.0 特性的相關(guān)資料,幫助大家更好的理解和學(xué)習使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C# using 關(guān)鍵字用法以及容易踩的坑

    C# using 關(guān)鍵字用法以及容易踩的坑

    using?關(guān)鍵字是C#中資源管理的基石,從指令到語句再到聲明,每一次改進都在簡化代碼的同時強化了確定性釋放,本文介紹using的關(guān)鍵用法、經(jīng)典場景以及容易踩的坑,感興趣的朋友一起看看吧
    2026-05-05
  • C#中高效的多線程并行處理實現(xiàn)方式詳解

    C#中高效的多線程并行處理實現(xiàn)方式詳解

    在處理大型數(shù)據(jù)集時,單線程處理往往成為性能瓶頸,所以本文將詳細介紹幾種高效的多線程并行處理實現(xiàn)方式,幫助開發(fā)者優(yōu)化數(shù)據(jù)處理流程,有需要的可以了解下
    2025-04-04
  • 使用c#+IMap實現(xiàn)收取163郵件

    使用c#+IMap實現(xiàn)收取163郵件

    本文給大家推薦的是使用c#+IMap實現(xiàn)收取163郵件的具體方法和示例代碼,并附上了smtp郵箱發(fā)送郵件的代碼,有需要的小伙伴可以參考下
    2018-02-02
  • Unity自定義編輯器界面(Inspector界面)

    Unity自定義編輯器界面(Inspector界面)

    這篇文章主要為大家詳細介紹了Unity自定義編輯器界面,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評論

繁昌县| 遵义市| 铜鼓县| 永清县| 荣成市| 疏附县| 乌兰察布市| 台州市| 竹山县| 大安市| 绥芬河市| 石首市| 丹东市| 抚顺县| 藁城市| 麦盖提县| 邢台市| 封丘县| 武宁县| 佛教| 桑日县| 凤台县| 怀集县| 积石山| 小金县| 张北县| 文成县| 布拖县| 米林县| 敖汉旗| 临朐县| 叶城县| 彰化市| 肥城市| 庆城县| 宁河县| 拜泉县| 鄱阳县| 江门市| 汨罗市| 团风县|