有时在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.config
是Data Source=xxx';Initial Catalog=xxx;User ID=xxx;Password=xxx;Max Pool Size=100;
。
我试图关闭池,但没有帮助。我检查了每一个连接是否处理得当。所有的SELECT
都是好的——意思是它们不花太多时间。特别是当应用程序正常工作时,我可以看到。
这个错误也发生在我离开我的网站一段时间(15 - 60分钟),并再次进入它的第一次;那么我所需要做的就是刷新它,然后它就可以正常工作了。
在这个错误的时间SQL Server工作正常,其他网站使用大多数相同的选择查询工作正常
有谁能告诉我哪里有问题吗?我已经没有主意了。
编辑:这将是有用的,至少不必刷新页面后闲置较长时间,并得到这个一次性超时过期。
ADO.NET中有两个主要的Timeout属性。
- 连接超时。可以通过在Connection String中设置Connection对象的ConnectionTimeout属性来解决。
- 数据访问超时(命令对象)。可以将CommandTimeout属性设置为Command object。我建议您将CommandTimeOut属性设置为较大的一个值。试试这个。请让我知道这是否可以解决这个问题。如果您还有任何问题,请随时与我联系。