0

我知道在 Stack Overflow 上有一个类似的问题,但它并不完全符合我的尝试。我相信这个问题的原因是不同的,尽管最终结果是一样的。

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

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

起初,我做了一些调查,并意识到 using using, using a finalizecall 和其他解决方案是不够的。该错误最终仍会发生。

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

那我现在该怎么做?

4

1 回答 1

-1

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

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

此外,在处理连接时,请确保清除池。

if (_connection != null)
{
    SqlConnection.ClearAllPools();
    _connection.Close();
    _connection.Dispose();
}
于 2013-05-17T17:59:13.280 回答