有时在System.Data.ProviderBase.DbConnectionPool中得到超时过期(…).GetCo

本文关键字:过期 超时 GetCo System Data DbConnectionPool ProviderBase | 更新日期: 2023-09-27 18:07:52

我的网站大部分时间工作正常,但有时我得到超时过期错误,1-15分钟不能做任何事情。第一次出现错误时为:

The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) (...)

之后,如果我尝试刷新页面我总是得到:

Timeout expired.  The timeout period elapsed prior to completion of the operation or the server  is not responding.   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 
(...).

我使用的每个连接都是SqlDataSource,或者以这样的代码打开:

SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Faktury_RebuildConnectionString"].ToString());
SqlCommand myCommand = new SqlCommand("Command String", myConnection);
try{                    
  myConnection.Open();
  somecodehere()
}
finally
{
  if (myConnection != null)
  {
    myConnection.Close();
  }
}

我的连接字符串在web.configData Source=xxx';Initial Catalog=xxx;User ID=xxx;Password=xxx;Max Pool Size=100;

我试图关闭池,但没有帮助。我检查了每一个连接是否处理得当。所有的SELECT都是好的——意思是它们不花太多时间。特别是当应用程序正常工作时,我可以看到。

这个错误也发生在我离开我的网站一段时间(15 - 60分钟),并再次进入它的第一次;那么我所需要做的就是刷新它,然后它就可以正常工作了。

在这个错误的时间SQL Server工作正常,其他网站使用大多数相同的选择查询工作正常

有谁能告诉我哪里有问题吗?我已经没有主意了。

编辑:这将是有用的,至少不必刷新页面后闲置较长时间,并得到这个一次性超时过期。

有时在System.Data.ProviderBase.DbConnectionPool中得到超时过期(…).GetCo

ADO.NET中有两个主要的Timeout属性。

  1. 连接超时。可以通过在Connection String中设置Connection对象的ConnectionTimeout属性来解决。
  2. 数据访问超时(命令对象)。可以将CommandTimeout属性设置为Command object。我建议您将CommandTimeOut属性设置为较大的一个值。试试这个。请让我知道这是否可以解决这个问题。如果您还有任何问题,请随时与我联系。