当前位置:  编程技术>.net/c#/asp.net

asp.net连接数据库超时的解决办法

    来源: 互联网  发布时间:2014-08-30

    本文导语:  错误提示:“超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。  ” 经过几天辛苦写的代码,终于实现了功能丰富的查询功能,但是使用的过程...

错误提示:“超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。  ”

经过几天辛苦写的代码,终于实现了功能丰富的查询功能,但是使用的过程中,却经常出现上面的错误,百思不得其解。写代码的时候就担心因为功能复杂,效率会很低。

解决方案一

我想原因可能是并发操作。DataReader是独占连接的,就是说你的程序可能设计上有问题。比如说最大连接设100,假设有100个人同时使用DataReader正在读取数据库内容,那么当第101人读取的时候,连接池中的连接已经没有了,就会出现上面的错误。DataReader是独占连接的,每个DataReader都要占用一个连接。当然这个情况是偶尔出现的,所以会很长时间出现一次,因为只有同时有超过连接池最大连接数量的并发操作才会发生。而且你加大并发数量只能暂时缓解问题,如果你加大到200个并发连接,如果有201人同时操作怎么办?你说了你使用Connection对象的Close()方法,这是不行的,因为Close()方法仅仅是关闭连接,但这个连接没有释放,还是被这个对象占用,要释放必须使用Connection的Dispose()方法显式释放连接才可以,否则这个对象占用的连接只能等到垃圾收集的情况下才能被释放。这种情况肯定会出现“超时时间已到”的错误。

解决方法:
1 修改几个关键页面或访问比较频繁的数据库访问操作,使用DataAdapter和DataSet来获取数据库数据,不要使用DataReader。
2 在访问数据库的页面上使用数据缓存,如果页面的数据不是经常更新(几分钟更新一次)的话,使用Cache对象可以不用访问数据库而使用缓存中的内容,那么可以大大减少连接数量。
3 修改代码,把使用Connection对象的地方都在Close()后面加上Dispose()调用。
4 建议对数据库操作进行大的修改,建立自己的数据库操作代理类,继承System.IDisposable接口,强迫释放资源,这样就不会出现连接数量不够的问题了。

解决方案二

解决方法(*):WEB.config 里面:在数据库连接加 Max Pool Size = 512;server=local;uid=;pwd=;database=2004;Max Pool Size = 512;">一劳永逸。

解决方案三

估计是连接(Connection)对象没有Close。倒是不必Dispose,而DataReader用完后应该关闭,但不关闭也没问题,只是不关闭的话此连接对象就一直不能用,只要你最终关闭了连接对象就不会出问题。
连接对象在Open后的操作都放在try块中,后面跟一个finally块:conn.Close();


    
 
 

您可能感兴趣的文章:

  • asp.net 超时设置的方法介绍
  • ASP.NET的超时设置
  • asp.net超时时间与上传文件大小的设置方法
  • asp.net的各种超时问题小结
  • 设置ASP.NET页面的运行超时时间详细到单个页面及站点
  • asp.net 执行sql超时的解决方法分享
  • asp.net Session超时问题的解决方法有哪些?
  • asp连接sql server 2005的代码
  • asp.net 在webcofig中连接数据库二种方式
  • 问一个幼稚的问题:jsp能象asp那样不建立odbc数据源却可以连接access数据库吗?
  • asp.net怎么连接access数据库
  • c#(asp.net)连接excel的实例代码
  • asp.net使用ODP即oracle连接方式的的防注入登录验证程序
  • asp.net 3.5中在web.config文件创建ACCESS连接字符串的方法
  • 求助在windows下用asp连接访问另一台SCO UNIX的sybase数据库服务器方法
  • asp.net连接数据库读取数据示例分享
  • ASP.NET连接MySql数据库的2个方法及示例
  • asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)
  • asp.net web.config配置连接字符串的方法
  • 页面间隔半秒钟更新时间 Asp.net使用Comet开发http长连接示例分享
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有没有办法把客户端IP和计算机名记录在asp.net服务器上?
  • asp和jsp有什么办法可以互通参数值?
  • 发布程序时出现“类型ASP.global_asax同时存在于...”错误的解决办法
  • oracle iis7站长之家
  • iis6网站属性没有asp.net选项卡的解决办法
  • ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享
  • ASP和ASP.Net共享Session解决办法
  • ASP.NET MasterPage中图片路径的解决办法
  • asp.net 服务器应用程序不可用的解决办法
  • Win7 IIS7.5运行ASP时出现500错误的解决办法
  • 使用asp.net MVC4中的Bundle遇到的问题及解决办法分享
  • ASP.NET之 Ajax相关知识介绍及组件图
  • 我想了解一些关于Java怎样与Asp或Asp.net结合方面在未来发展方向的问题?
  • c#/ASP.NET操作cookie(读写)代码示例
  • asp.net UrlEncode对应asp urlencode的处理方法
  • asp.net实例 定义和使用asp:AccessDataSource
  • win2008 r2 服务器环境配置(FTP/ASP/ASP.Net/PHP)
  • asp与asp.net的session共享
  • 如何在unix下发布asp?
  • 怎么让Apache支持Asp?
  • ??谁能把ASP代码改为JSP的
  • Linux平台下哪种方法实现ASP好?
  • 通过socket和asp打交道
  • 犹豫中……,到底是选择ASP,还是JSP?
  • asp 是否 可用applet标签?帮忙!!
  • asp.net判断数据库表是否存在 asp.net修改表名的方法
  • 新人提问:asp+access的程序在linux下怎么改?
  • 用JAVA APPLET做的交互式网页和ASP、PHP做的相比有什么优势呢?
  • asp.net文字水印功能简单代码
  • asp里面可否使用java写的邮件,给30分.
  • asp与Jsp可否在iis中共存的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3