C#解决访问API显示基础连接已经关闭的问题

 更新时间:2024年12月16日 09:49:11   作者:初九之潜龙勿用  
最近在 Web 部署百度 AI 图像识别 AipSdk.dll 封装库的时候,在调用OCR图像识别 API 的时候,显示为 “ 基础连接已经关闭: 接收时发生错误,” ,并且运行后直接崩溃,所以本文给大家介绍了C#解决访问API显示基础连接已经关闭的问题,需要的朋友可以参考下

故障现象

最近在 Web 部署百度 AI 图像识别 AipSdk.dll 封装库的时候,在调用OCR图像识别 API 的时候,显示为 “ 基础连接已经关闭: 接收时发生错误。” ,并且运行后直接崩溃:

以身份证识别为例,如下代码:

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); 调用上,这种现象不是每次都会发生,在其它部署的 IIS 站点上未发现此类问题,且部署配置一致。

开发运行环境

操作系统: Windows Server 2019 DataCenter

.net版本: .netFramework4.7.2 

开发工具:VS2019  C#

解决

通过在Page_Load 服务器事件添加如下语句,解决:

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) 协议的版本,以用于新连接,不会更改现有连接。

System.Net.SecurityProtocolType 指定 Schannel 安全包支持的安全协议的可选择项见下表:

序号说明
1Ssl3指定安全套接字层 (SSL) 3.0 安全协议。 SSL 3.0 已由传输层安全性 (TLS) 协议取代,之所以仍然提供这个方法,只是为了向后兼容。
2SystemDefault允许操作系统选择要使用的最佳协议,并将其用于阻止不安全的协议。 应使用此值,除非应用有特定原因不得使用此值。
3Tls指定传输层安全 (TLS) 1.0 安全协议。 TLS 1.0 协议在 IETF RFC 2246 中定义。
4Tls1指定传输层安全 (TLS) 1.1 安全协议。 TLS 1.1 协议在 IETF RFC 4346 中定义。 在 Windows 系统上,从 Windows 7 开始支持此值。
5Tls2指定传输层安全 (TLS) 1.2 安全协议。 TLS 1.2 协议在 IETF RFC 5246 中定义。 在 Windows 系统上,从 Windows 7 开始支持此值。

到此这篇关于C#解决访问API显示基础连接已经关闭的问题的文章就介绍到这了,更多相关C#访问API显示连接关闭内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# 如何实现Token

    C# 如何实现Token

    这篇文章主要介绍了C# 如何实现Token,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#实现微信跳一跳小游戏的自动跳跃助手开发实战

    C#实现微信跳一跳小游戏的自动跳跃助手开发实战

    前段时间微信更新了新版本后,带来的一款H5小游戏“跳一跳”在各朋友圈里又火了起来,类似以前的“打飞机”游戏,这游戏玩法简单,但加上了积分排名功能后,却成了“装逼”的地方,于是很多人花钱花时间的刷积分抢排名
    2018-01-01
  • C#通过热键控制显示器开关的方法

    C#通过热键控制显示器开关的方法

    这篇文章主要介绍了C#通过热键控制显示器开关的方法,涉及C#针对热键的操作技巧,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • C#使用动态规划解决0-1背包问题实例分析

    C#使用动态规划解决0-1背包问题实例分析

    这篇文章主要介绍了C#使用动态规划解决0-1背包问题,实例分析了C#动态规划算法的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • C#实现文字转语音功能

    C#实现文字转语音功能

    这篇文章主要为大家详细介绍了C#实现文字转语音功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C#绘制中国国旗的方法

    C#绘制中国国旗的方法

    这篇文章主要介绍了C#绘制中国国旗的方法,以实例形式较为详细的分析了C#图形绘制的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C#如何遍历Dictionary

    C#如何遍历Dictionary

    这篇文章主要为大家详细介绍了C#遍历Dictionary的方法,.NET中的Dictionary是键/值对的集合,使用起来比较方便,Dictionary也可以用KeyValuePair来迭代遍历,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • C#判断访问来源是否为搜索引擎链接的方法

    C#判断访问来源是否为搜索引擎链接的方法

    这篇文章主要介绍了C#判断访问来源是否为搜索引擎链接的方法,实例分析了C#解析URL来源的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • C#实现在PDF文档中应用多种不同字体

    C#实现在PDF文档中应用多种不同字体

    在PDF文档中,可绘制不同字体样式、不同语言的文字,可通过使用Standard字体、TrueType字体、CJK字体或者自定义(私有)等字体类型。本文将具体介绍实现的方法,需要的可以参考一下
    2022-01-01
  • DevExpress中GridControl列转义的实现方法

    DevExpress中GridControl列转义的实现方法

    这篇文章主要介绍了DevExpress中GridControl列转义的实现方法,在项目开发中有一定的实用价值,需要的朋友可以参考下
    2014-08-08

最新评论