连接池错误

来源:百度知道 编辑:UC知道 时间:2024/06/11 21:01:19
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: 超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[InvalidOperationException: 超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。]
System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) +396
System.Data.SqlClient.SqlConnection.Open() +384
localhost.lei.HSqlDB.Initial(String init_sql) in C:\Inetpub\wwwroot\lei\HSqlDB.cs:91
localhost.lei.HSqlDB..ctor() in C:\Inetpub\wwwroot\lei\HSqlDB.cs:62
localhost.lei.HDataRset..ctor() in C:\Inetpub&#

SqlDataReader确实是自动回收的,但是有一定的时间,楼主的问题应该不是这样
ASP.NET中默认是使用连接池的,但是楼主的问题很奇怪,不过你可以这样试下,看这个,在连接字符串中设置
string strConusePool = "Server=localhost; Integrated Security=SSPI; database=mydatabase;"
+"pooling=true;connection lifetime=5;msx pool size=100";

pooling=true //说明使用连接池(默认)
connection lifetime=5 //默认为0,指的是连接池的生命周期
msx pool size=100 //默认为100,说明最大能放多少个连接,你把这个几个属性该下,试试,还有最主要的一点,你完后Close()了吗?

System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) +396
System.Data.SqlClient.SqlConnection.Open() +384

你执行完对库操作close了么……

你是不是用了很多的SqlDataReader,用过以后要关闭,不然就会这样,好像在。net下面对SqlDataReader不是自动回收的