You need to enable JavaScript to run this app. VB项目能否使用Azure Custom Vision?调用接口报连接错误
优惠活动
大模型
产品
解决方案
定价
更多

VB项目能否使用Azure Custom Vision?调用接口报连接错误

Azure Custom Vision集成VB.NET连接异常排查指南

核心结论

Azure Custom Vision不存在与VB.NET的专属不兼容问题,所有面向.NET生态的SDK和服务接口都可以在VB.NET项目中正常调用。你遇到的这一连串从SocketException到HttpRequestException的嵌套报错,本质是传输层TLS协议协商失败导致的连接中断,和开发语言无关。

报错根因解析

你贴出的异常链是旧版.NET Framework应用调用Azure云服务的典型报错特征:
当前Azure所有公开服务已经完全弃用TLS 1.0、TLS 1.1协议,仅接受TLS 1.2及以上版本的连接请求。而传统VB.NET项目大多基于.NET Framework 4.6及更早版本开发,这类框架默认的传输安全策略没有开启TLS 1.2支持,客户端发起握手时会用旧版协议和服务端沟通,服务端识别到不安全的协议版本后会直接强制中断连接,就会依次触发你看到的异常链路:

  • Socket层抛出“连接被远端主机强制关闭”的底层异常
  • 向上传递为IO读取失败的异常
  • 再被封装成WebException、最终到HttpRequestException的顶层异常
    你提到C#测试项目可以正常连接,本质是测试的C#项目要么基于.NET Core/.NET 5+这类默认开启TLS 1.2的新框架,要么代码里提前做了TLS版本的适配,和语言本身的兼容性没有关系——所有.NET SDK都是基于公共中间语言开发的,VB.NET和C#共享同一套运行时类型系统,不存在C#能调用、VB不能调用的SDK。

可直接落地的修复步骤

  • 先确认VB项目的运行框架版本:
    如果项目基于.NET Framework 4.5及更早版本,优先升级到.NET Framework 4.7.2及以上版本,这个版本会自动匹配系统支持的最高TLS版本,不需要额外修改业务代码。
  • 如果暂时无法升级框架版本,需要在项目的全局启动位置(比如程序入口Sub Main、主窗体Load事件的最开头,一定要放在所有HTTP请求调用逻辑之前)加上TLS 1.2的强制启用代码:
    ' .NET Framework 4.6及以上版本可直接用枚举赋值
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
    
    如果是.NET Framework 4.5到4.6.1的版本,框架内置的枚举没有Tls12选项,可以直接通过数值映射的方式兼容:
    ' 老版本框架兼容写法,3072对应TLS 1.2的协议标识
    ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType)
    
  • 检查项目的Azure Custom Vision SDK引用:
    通过NuGet包管理器安装最新稳定版的Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training和Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction包即可,这些包可以直接在VB.NET项目里正常实例化调用。

常见踩坑提醒

  • 不要把TLS配置代码写在单个请求方法内部,如果应用启动时已经用旧的TLS策略初始化了连接池,单独在某个方法里改配置是不生效的,必须在全局启动入口提前配置。
  • 如果你的应用部署在Windows Server 2012 R2及更早的服务器系统上,需要确认系统已经安装了支持TLS 1.2的官方补丁,否则代码里的配置也无法生效。
  • 完成TLS配置后可以先简单测试连通性,不用直接调Custom Vision的业务接口,先发起一次对Azure端点的简单请求,确认没有连接中断的异常后再接入业务逻辑。

内容的提问来源于stack exchange,提问作者lrixmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 03:36:05