请阅读全文,然后将其标记为副本.
在我正在调试的项目中,我收到一个SqlException,上面写着:
附加信息:成功地与服务器建立了连接,但在登录前握手时发生了错误。(提供者: SSL提供程序,错误:0-等待操作超时。)
这是在调试会话期间发生的,在调试会话中,前一个会话仅在几秒钟前执行,没有问题。由于初始异常,我无法连接到此项目中的数据库服务器。在SqlConnection.Open()方法调用.上抛出异常
背景
这不是我第一次收到这封信。在此之前,我与它进行了两周的斗争,最终启动了微软的支持票。在该实例中,它发现连接字符串上的ApplicationName属性太长(我们使用的是完全限定的程序集名称),缩短它可以缓解问题。
这一次,有
最后,出于一时兴起,我创建了一个新项目,其唯一目的是连接到同一台SQL服务器。我将连接字符串从不工作的项目复制到新项目中,并将其连接起来。每一个项目的连接缓存都在进行吗?在Clean>Rebuild和Visual和Windows的重新启动中幸存下来的东西吗?
相关守则
public SqlConnection OpenSqlConnection(string connectionString)
{
var conn = new SqlConnection(connectionString);
conn.Open();
_connectionString = connectionString;
var sb = new SqlConnectionStringBuilder(_connectionString);
_server = sb.DataSource;
_database = sb.InitialCatalog;
return conn;
}正在传入的连接字符串是从应用程序中其他地方的SqlConnectionStringBuilder输出的。连接字符串类似于:"Data Source=SERVER;Initial Catalog=DATABASE;Integrated Security=True;Connect Timeout=60"
发布于 2017-10-16 18:19:38
因此,这个问题继续困扰着我,它似乎是来自我的家庭网络(我是一个远程开发人员)和通过VPN访问的工作网络的滞后功能。我对工作网络上的服务器平均有100 to的ping时间。
真正奇怪的是,连接字符串工作了几个月没有问题,然后突然停止。当时,Application值类似于Application = "MyProgram.DAL. Culture=en,PublicKeyToken=1a1a1a1a1a1a1a1a,Version=1.0.0.0“。换句话说,一个完全限定的程序集名称。最后,我将它更改为缩短的"MyProgram.DAL“类型名称,它再次工作。
几个月后,我又被它所困扰。我碰巧发现,如果我吃了这个例外,等了几次,一切都很好。即使应用程序报告它失败了,它也会很高兴地使用连接。因此,我将方法更改为:
public SqlConnection OpenSqlConnection(string connectionString)
{
var conn = new SqlConnection(connectionString);
var retries = 10;
while (conn.State != ConnectionState.Open && retries > 0)
{
try
{
conn.Open();
}
catch (Exception)
{
}
Thread.Sleep(500);
retries--;
}
_connectionString = connectionString;
var sb = new SqlConnectionStringBuilder(_connectionString);
_server = sb.DataSource;
_database = sb.InitialCatalog;
return conn;
}发布于 2018-06-11 20:26:54
对我来说,诀窍是增加连接字符串上的超时,因为通过vpn连接需要很长时间才能建立连接。您可以通过添加;连接超时=值来实现这一点。
当我在vpn上连接一个试图连接到sql服务器的应用程序时,我也遇到了同样的错误。
默认情况下,超时设置为15秒。
看来你已经有60秒了,也许你只是需要更多.
希望能帮上忙!
发布于 2017-05-01 20:25:54
尝试显式地将Application Name=MyAppName;添加到连接字符串。从程序集名称自动生成的值可能超过某些限制。
检查网络设置,比如显式限制帧大小。如果Server正在另一台计算机上运行,则重新启动路由器。
尝试将Pooling=False;添加到连接字符串,并检查这是否解决了应用程序重新启动时重复连接的问题。
https://stackoverflow.com/questions/43597294
复制相似问题