.net core linux环境下 System.Data.SqlClient.SqlException: Connection Timeout Expired.

最近遇到了一个很奇葩的问题,我编写了一个.net core程序读取多个数据库数据源,进行数据同步处理。该程序在windows环境下运行完全正常,但在linux环境下运行报异常,提示

System.Data.SqlClient.SqlException: Connection Timeout Expired. The timeout period elapsed during the post-login phase.

更奇葩的地方在于在linux环境下,两个数据库,一个读取正常,一个读取异常。我考虑了各种原因,端口问题,连接串问题,表名中文问题,视图问题,ORM问题(从EF切换到dapper)始终无法定位真正的原因。

最后发现net core 的System.Data.SqlClient最低支持SqlServer 2008 R2 SP3,小于这个版本的就会报错(见引用)。看来.net core不是银弹,坑还是有的。

引用:

https://www.cnblogs.com/xiaxiaolu/p/10309064.html>
https://github.com/dotnet/corefx/issues/9719

原文地址:https://www.cnblogs.com/wswind/p/10816454.html