System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。我网站放在服务器上 出现的上面的报错  网上查看资料说   数据库连接没有关闭.但是我有很多页面  连接对象一般都没有关闭 有没有一次性解决的办法?

解决方案 »

  1.   

    数据库里操作类规范
    using
    优化查询语句
    public class SqlDbHelper
        {
            private string connectionString;
            public string ConnectionString
            {
                set { connectionString = value; }
            }
            public SqlDbHelper()
                : this(ConfigurationManager.ConnectionStrings["Conn"].ConnectionString)
            {        }
       }
      

  2.   

     超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。源错误:行 32:             }这是详细的错误 请大侠们帮帮忙啊
    行 33:             if(DbConn.State==System.Data.ConnectionState.Closed){
    行 34:                 DbConn.Open();
    行 35:             }
    行 36:             return DbConn;
    源文件: e:\361fdc\App_Code\DataBase.cs    行: 34
      

  3.   

    max pool size  网上查了资料 我把这个写在了连接字符串里面了 这个 maxpoolsize是什么东西啊? 
      

  4.   


    解决方法(*):WEB.config 里面:在数据库连接加 Max Pool Size = 512;server=local;uid=;pwd=;database=2004;Max Pool Size = 512;">一劳永逸。
    估计是连接(Connection)对象没有Close。倒是不必Dispose,而DataReader用完后应该关闭,但不关闭也没问题,只是不关闭的话此连接对象就一直不能用,只要你最终关闭了连接对象就不会出问题。   
        参考:http://hi.baidu.com/cy594/blog/item/47b3b901517ad00b728da540.html/cmtid/c3c51bd56d9d8eca50da4b57
      

  5.   

    不要使用,SQL语句在查询分析器执行看执行计划
      

  6.   

    这个没有办法,你在多个页面使用,每个地方都没有关闭,只能在每个地方人工关闭,研究Max Pool Size什么的是毫无意义的,无论你设置多大,总有用完的时候,况且,数据库也不支持这么大的连接。现在只能看你原来的代码是怎么写的,看看是否能够在你的database里面做一些处理。
      

  7.   

    那用 dataset 应该比用 sqldatareader 好吧 不是不 不要用 sqldatareader
      

  8.   

    就是关闭DataReader我也碰到过这种情况
      

  9.   

    还有就是SQLSERVER使用的是开发版或个人版,不是企业版