连接池问题在共享主机上正确处理

时间:2013-05-17 17:59:13

标签: c# sql-server

我知道Stack Overflow上有类似的问题,但它并不适合我的尝试。我认为这个问题的原因是不同的,尽管最终结果是相同的。

每当我的网站运行大约两三天时,我就会收到以下错误(这显然是由连接/查询挂起或未正确处理引起的。)

  

超时已过期。从池中获取连接之前经过的超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。

首先,我做了一些调查并意识到使用using,使用finalize调用和其他解决方案是不够的。错误最终仍会发生。

所以我决定弄清楚Visual Studio中的服务器资源管理器(我经常使用它)是否漏洞连接。我已经将最大执行和连接超时更改为3秒,并将池大小减少到10个连接,因此服务器资源管理器可能是原因。没有运气!

那么我现在该尝试什么?

1 个答案:

答案 0 :(得分:-1)

这是我解决问题的代码。连接时,捕获异常并清除所有池,然后重试。

_connection =
    new SqlConnection(connectionString);
try
{
    _connection.Open();
}
catch (InvalidOperationException)
{
    SqlConnection.ClearAllPools();
    _connection.Open();
}

此外,在处理连接时,请务必清除池。

if (_connection != null)
{
    SqlConnection.ClearAllPools();
    _connection.Close();
    _connection.Dispose();
}