C#解決訪問API顯示基礎(chǔ)連接已經(jīng)關(guān)閉的問題
故障現(xiàn)象
最近在 Web 部署百度 AI 圖像識別 AipSdk.dll 封裝庫的時候,在調(diào)用OCR圖像識別 API 的時候,顯示為 “ 基礎(chǔ)連接已經(jīng)關(guān)閉: 接收時發(fā)生錯誤。” ,并且運行后直接崩潰:


以身份證識別為例,如下代碼:
var API_KEY = "";
var SECRET_KEY = "";
var client = new Baidu.Aip.Ocr.Ocr(API_KEY, SECRET_KEY);
client.Timeout = 60000; // 修改超時時間
Newtonsoft.Json.Linq.JObject result = new Newtonsoft.Json.Linq.JObject();
var options = new Dictionary<string, object>{
{"detect_risk", "true"},
{"detect_direction", "true"},
{"detect_photo", "true"}
};
byte[] image = getImageByte(imagePath);
result = client.Idcard(image, "front", options);問題出在 client.Idcard(image, "front", options); 調(diào)用上,這種現(xiàn)象不是每次都會發(fā)生,在其它部署的 IIS 站點上未發(fā)現(xiàn)此類問題,且部署配置一致。
開發(fā)運行環(huán)境
操作系統(tǒng): Windows Server 2019 DataCenter
.net版本: .netFramework4.7.2
開發(fā)工具:VS2019 C#
解決
通過在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;
} System.Net.ServicePointManager.SecurityProtocol 屬性可選擇安全套接字層 (SSL) 或傳輸層安全 (TLS) 協(xié)議的版本,以用于新連接,不會更改現(xiàn)有連接。
System.Net.SecurityProtocolType 指定 Schannel 安全包支持的安全協(xié)議的可選擇項見下表:
| 序號 | 值 | 說明 |
|---|---|---|
| 1 | Ssl3 | 指定安全套接字層 (SSL) 3.0 安全協(xié)議。 SSL 3.0 已由傳輸層安全性 (TLS) 協(xié)議取代,之所以仍然提供這個方法,只是為了向后兼容。 |
| 2 | SystemDefault | 允許操作系統(tǒng)選擇要使用的最佳協(xié)議,并將其用于阻止不安全的協(xié)議。 應(yīng)使用此值,除非應(yīng)用有特定原因不得使用此值。 |
| 3 | Tls | 指定傳輸層安全 (TLS) 1.0 安全協(xié)議。 TLS 1.0 協(xié)議在 IETF RFC 2246 中定義。 |
| 4 | Tls1 | 指定傳輸層安全 (TLS) 1.1 安全協(xié)議。 TLS 1.1 協(xié)議在 IETF RFC 4346 中定義。 在 Windows 系統(tǒng)上,從 Windows 7 開始支持此值。 |
| 5 | Tls2 | 指定傳輸層安全 (TLS) 1.2 安全協(xié)議。 TLS 1.2 協(xié)議在 IETF RFC 5246 中定義。 在 Windows 系統(tǒng)上,從 Windows 7 開始支持此值。 |
到此這篇關(guān)于C#解決訪問API顯示基礎(chǔ)連接已經(jīng)關(guān)閉的問題的文章就介紹到這了,更多相關(guān)C#訪問API顯示連接關(guān)閉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#中一個方法返回多個值的實現(xiàn)方法小結(jié)
通常一個方法只能返回一個值,但是如果在某些時候,我們想要返回多個值,例如某個方法將一個浮點數(shù)分割成一個整數(shù)和一個小數(shù)返回,因此本文給大家介紹了C#中一個方法返回多個值的實現(xiàn)方法及示例代碼,需要的朋友可以參考下2024-05-05

