我知道Stack Overflow上有类似的问题,但它并不适合我的尝试。我认为这个问题的原因是不同的,尽管最终结果是相同的。
每当我的网站运行大约两三天时,我就会收到以下错误(这显然是由连接/查询挂起或未正确处理引起的。)
超时已过期。从池中获取连接之前经过的超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。
首先,我做了一些调查并意识到使用using
,使用finalize
调用和其他解决方案是不够的。错误最终仍会发生。
所以我决定弄清楚Visual Studio中的服务器资源管理器(我经常使用它)是否漏洞连接。我已经将最大执行和连接超时更改为3秒,并将池大小减少到10个连接,因此服务器资源管理器可能是原因。没有运气!
那么我现在该尝试什么?
答案 0 :(得分:-1)
这是我解决问题的代码。连接时,捕获异常并清除所有池,然后重试。
_connection =
new SqlConnection(connectionString);
try
{
_connection.Open();
}
catch (InvalidOperationException)
{
SqlConnection.ClearAllPools();
_connection.Open();
}
此外,在处理连接时,请务必清除池。
if (_connection != null)
{
SqlConnection.ClearAllPools();
_connection.Close();
_connection.Dispose();
}