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显示连接关闭内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解.NET 4.0中的泛型协变(covariant)和反变(contravariant)

    详解.NET 4.0中的泛型协变(covariant)和反变(contravariant)

    这篇文章主要介绍了详解.NET 4.0中的泛型协变(covariant)和反变(contravariant),本文讲解了协变和反变的背景知识、.NET 4.0引入的泛型协变、反变性、协变和反变的相互作用等内容,需要的朋友可以参考下
    2015-06-06
  • c#中利用委托反射将DataTable转换为实体集的代码

    c#中利用委托反射将DataTable转换为实体集的代码

    c#中利用委托反射将DataTable转换为实体集的代码,需要的朋友可以参考下
    2012-10-10
  • C#实现AI五子棋游戏的示例代码

    C#实现AI五子棋游戏的示例代码

    这篇文章主要为大家详细介绍了C#如何智能AI五子棋游戏中的人工下棋操作以及对应的机器操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-11-11
  • C#特性(Attribute)

    C#特性(Attribute)

    这篇文章介绍了C#的特性(Attribute),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C#实现鼠标移动到曲线图上显示值的方法

    C#实现鼠标移动到曲线图上显示值的方法

    这篇文章主要介绍了C#实现鼠标移动到曲线图上显示值的方法,是C#的WinForm窗体程序设计中非常实用的技巧,需要的朋友可以参考下
    2014-10-10
  • C#操作串口通信协议Modbus的常用方法介绍

    C#操作串口通信协议Modbus的常用方法介绍

    这篇文章介绍了C#操作串口通信协议Modbus的常用方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#语言主要语言区域

    C#语言主要语言区域

    这篇文章主要介绍了C#语言主要语言区域,C#语言区域主要包括数组、集合和 LINQ、数组等,下面文化在哪个内容围绕这些区域得相关资料了展开详情,需要的小伙伴可以参考一下
    2021-12-12
  • MessageBox的Buttons和三级联动效果

    MessageBox的Buttons和三级联动效果

    这篇文章主要介绍了MessageBox的Buttons和三级联动的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • c# 制作gif的四种方法

    c# 制作gif的四种方法

    这篇文章主要介绍了c# 制作gif的四种方法,帮助大家更好的理解和学习c#编程语言,感兴趣的朋友可以了解下
    2020-12-12
  • 对int array进行排序的实例讲解

    对int array进行排序的实例讲解

    下面小编就为大家分享一篇对int array进行排序的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12

最新评论