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

ASP.NET Core 2.0.8间歇性TDS协议错误需重启IIS求解决方案

问题:ASP.NET Core 2.0.8 应用间歇性出现TDS协议MARS头错误

环境与配置

  • ASP.NET Core 版本:2.0.8
  • 操作系统:Windows Server 2016
  • IIS 版本:10
  • SQL Server:Microsoft SQL Server 2014
  • 连接字符串配置:MultipleActiveResultSets=False;

错误现象

应用此前运行稳定,现所有API间歇性返回错误,错误信息如下:

{
"errors": [
"The incoming tabular data stream (TDS) protocol stream is incorrect. The MARS TDS header contained errors."
]
}

错误仅能通过重启IIS临时解决,发作无规律,难以预判。

已尝试的排查与操作

  • 检查SQL Server配置,确认客户端MARS已启用
  • 切换连接字符串中MultipleActiveResultSets的True/False取值
  • 全面检查业务代码逻辑
  • 排查API内存泄漏问题

上述操作均未解决间歇性错误问题。


建议排查方向与解决方案

1. 检查并更新SQL Server驱动版本

ASP.NET Core 2.0.8默认使用的System.Data.SqlClient或Microsoft.Data.SqlClient可能存在与SQL Server 2014兼容的MARS相关bug:

  • 更新至对应驱动的.NET Core 2.0适配稳定版本
  • 若当前用System.Data.SqlClient,可尝试切换为Microsoft.Data.SqlClient(注意适配连接字符串配置)

2. 排查数据库连接池复用问题

间歇性错误大概率和连接池中的脏连接有关:

  • 在连接字符串中添加Max Pool Size=100;Pooling=true;Connection Reset=true;,强制连接回收时重置状态
  • 全面检查代码,确保所有SqlConnection、SqlDataReader等资源都用using块包裹,避免资源泄漏导致连接池异常

3. 调整IIS应用程序池配置

  • 关闭应用程序池的快速失败保护:打开IIS管理器→对应应用程序池→高级设置→快速失败保护→禁用
  • 检查应用程序池回收策略:避免在业务高峰时段触发定期回收,或调整内存回收阈值,防止因回收导致连接池状态紊乱

4. 捕获更详细的错误上下文

  • 在appsettings.json中设置日志级别为Debug,捕获数据库操作的完整调用栈
  • 用SQL Server的Extended Events或SQL Server Profiler跟踪TDS错误发生时的连接请求细节,定位具体触发场景

5. 安装SQL Server补丁

SQL Server 2014存在多个TDS协议、MARS相关的修复补丁:

  • 安装SQL Server 2014 Service Pack 3(SP3)及后续累积更新,修复已知的协议兼容问题

内容的提问来源于stack exchange,提问作者Ata ur Rehman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:27:19