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

.NET Core 7 WinForms连接MS SQL Server时远程主机强制关闭连接问题

解决方案:.NET Core 7 WinForms + EF7 连接SQL Server 2012在Windows Server 2016报错

核心原因

问题源于.NET Core 7使用的Microsoft.Data.SqlClient与Windows Server 2016的TLS配置、SQL Server 2012的加密支持不匹配,而.NET Framework程序依赖的System.Data.SqlClient默认行为更兼容旧环境。

具体解决步骤

  • 强制应用使用TLS 1.2
    在WinForms程序入口(Program.cs)的应用初始化前添加代码,指定TLS版本以避免.NET Core默认高版本TLS与SQL Server不兼容:

    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
    ApplicationConfiguration.Initialize();
    Application.Run(new MainForm());
    
  • 配置SQL Server 2012的TLS 1.2支持
    SQL Server 2012 SP3(你的版本11.0.7507.2属于此版本)支持TLS 1.2,但默认可能未启用,需通过注册表配置:

    1. 打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server
    2. 将Enabled DWORD值设为1,DisabledByDefault设为0
    3. 同样设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client的对应值
    4. 重启SQL Server服务
  • 调整连接字符串配置
    使用明确的加密规则并信任服务器证书,避免证书验证失败导致连接被强制关闭:

    Server=你的服务器地址;Database=你的数据库名;User ID=用户名;Password=密码;Encrypt=True;TrustServerCertificate=True;
    
  • 降级SQL客户端版本(可选)
    若上述方法无效,尝试将Microsoft.EntityFrameworkCore.SqlServer包版本降至6.x,EF6对旧SQL Server的兼容性更好,且仍支持.NET Core 7。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:34:59