You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M1升级.NET6替换SqlClient后出现Value cannot be null错误求助

问题原因及解决方案

问题原因

你的问题出在Microsoft.Data.SqlClient在Mac M1 ARM架构下的SQL Server实例解析逻辑缺陷:

  1. 连接字符串使用了IP地址\命名实例的格式(172.18.176.74\SANA),此时驱动会通过SQL Server Resolution Protocol(SSRP,即SQL Server浏览器服务)查询该命名实例对应的端口号。
  2. 在Mac M1的ARM环境中,Microsoft.Data.SqlClient的SSRP实现存在bug:当尝试获取目标主机的IP列表时返回了null,后续调用Linq的Where方法时,传入的source参数为空,直接触发了「Value cannot be null. (Parameter 'source')」异常。
  3. 旧版本的System.Data.SqlClient跨平台处理SSRP的逻辑与新版不同,未出现该问题;而Windows平台的Microsoft.Data.SqlClient不存在此ARM架构下的实现缺陷,因此运行正常。

解决方案

可以通过以下方式解决问题:

  • 直接指定端口号:先查询SQL Server命名实例SANA对应的端口(可通过SQL Server配置管理器、netstat命令或数据库服务器端查询),修改连接字符串为Data Source=172.18.176.74,端口号;Initial Catalog=SANA;User Id=Sana;password=******;MultipleActiveResultSets=true;Persist Security Info=True;,绕过SSRP解析流程。
  • 升级Microsoft.Data.SqlClient版本:将NuGet包升级到最新稳定版,该ARM架构下的SSRP空引用bug大概率已被官方修复。
  • 改用默认实例:若可调整SQL Server配置,将SANA改为默认实例,连接字符串去掉\SANA,直接使用Data Source=172.18.176.74;...,默认使用1433端口,无需SSRP解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:10:40