大神们,救命呀!!!

u010703853 2014-06-26 07:00:33
程序总是提示:
“/ASP.Web”应用程序中的服务器错误。
--------------------------------------------------------------------------------
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

但是我在本地测试是,没有问题,一旦发布到IIS ,通过其他客户端访问,如果访问比较频繁,就会出现这样的问题,
我也查询了写, 我的Connection 关闭了呀 ,代码如下:



//
public static SqlConnection getLocalStrConn()
{
string strConn = "Data Source=xxx.xx.xx.158;database=xxxx;User ID=sa;Pwd=xxx#@!;";
SqlConnection conn = new SqlConnection(strConn);
return conn;
}
//读取数据
public static SqlDataReader GetReadSQL(string strSQL)
{
SqlDataReader myReader;
SqlConnection conn = SQL.getJayStrConn();

SqlCommand comm = new SqlCommand(strSQL, conn);
comm.CommandType = CommandType.Text;
try
{
conn.Open();
myReader = comm.ExecuteReader(CommandBehavior.CloseConnection);
}
catch
{
return null;
}


return myReader;

}


在线等呀 。。。。急死...............
...全文
459 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
就是因为 SqlDataReader 没有关闭 纠缠了我太久了,,, 终于拔掉这个毒刺了 开心ing.......
smthgdin_020 2014-06-27
  • 打赏
  • 举报
回复
n你看一下iis里面的连接池,是不是满了,满了要释放一下。 当然最重要是看连接池设置的连接池大小和你的代码。你的代码没看到close连接,还有reader这类的东西,用完也要记得关掉。
  • 打赏
  • 举报
回复
引用 17 楼 Z65443344 的回复:
[quote=引用 16 楼 u010703853 的回复:] 大仙们,我发现了一个问题,就是我在本地调试的时候(没有发布到iis),可以无限次的访问,而且不会卡死,但是一旦发布在iis上,通过其他客户端来访问,访问频繁,系统就会挂掉。是代码的问题,还是iis配置的问题。 我感觉我的代码里面没有问题吧 ,该Close 就close了呀,,,,小鸟,在线等..............
因为你在本地调试的时候,如果结束调试(ctrl+F5),程序所有占用的资源就全部被释放了 但是IIS是一直在运行的,如果你也每隔几分钟就去重启下IIS,连接数据库就也没问题.[/quote] 哦 这样呀 那该怎么弄呢?红孩儿, 你看我的代码 哪地方有问题?
於黾 2014-06-27
  • 打赏
  • 举报
回复
引用 16 楼 u010703853 的回复:
大仙们,我发现了一个问题,就是我在本地调试的时候(没有发布到iis),可以无限次的访问,而且不会卡死,但是一旦发布在iis上,通过其他客户端来访问,访问频繁,系统就会挂掉。是代码的问题,还是iis配置的问题。 我感觉我的代码里面没有问题吧 ,该Close 就close了呀,,,,小鸟,在线等..............
因为你在本地调试的时候,如果结束调试(ctrl+F5),程序所有占用的资源就全部被释放了 但是IIS是一直在运行的,如果你也每隔几分钟就去重启下IIS,连接数据库就也没问题.
  • 打赏
  • 举报
回复
大仙们,我发现了一个问题,就是我在本地调试的时候(没有发布到iis),可以无限次的访问,而且不会卡死,但是一旦发布在iis上,通过其他客户端来访问,访问频繁,系统就会挂掉。是代码的问题,还是iis配置的问题。 我感觉我的代码里面没有问题吧 ,该Close 就close了呀,,,,小鸟,在线等..............
於黾 2014-06-27
  • 打赏
  • 举报
回复
话说,把数据库连接对象直接返回给需要数据的地方用,很不科学啊. 最好还是在哪连接就在哪关闭 读到的数据可以先存放到dataset或datatable里,然后返回这个 否则有10000个地方要连接数据库,你只要有一个地方忘记关闭,早晚出问题.
exception92 2014-06-27
  • 打赏
  • 举报
回复
引用 12 楼 u010703853 的回复:
[quote=引用 11 楼 sunny906 的回复:] [quote=引用 10 楼 Z65443344 的回复:] [quote=引用 9 楼 sunny906 的回复:] LZ既然用了CommandBehavior.CloseConnection,那么外面肯定也调用了Close方法,所以可以尝试后两种方法
不见得吧,楼主贴出的代码里没有close啊 猜测楼主认为CommandBehavior.CloseConnection就是读完数据将连接close掉了[/quote] 你知道这个CommandBehavior.CloseConnection是起什么作用的么,设置了这个属性,在外面只要调用myReader.Close()就会关闭SqlConnection连接,当然myReader是他定义的[/quote] 我想问问大神, CommandBehavior.CloseConnection 是不是关闭的功能? 急着交差啊,急死............ [/quote] http://msdn.microsoft.com/zh-tw/library/system.data.commandbehavior(v=vs.110).aspx
於黾 2014-06-27
  • 打赏
  • 举报
回复
引用 12 楼 u010703853 的回复:
[quote=引用 11 楼 sunny906 的回复:] [quote=引用 10 楼 Z65443344 的回复:] [quote=引用 9 楼 sunny906 的回复:] LZ既然用了CommandBehavior.CloseConnection,那么外面肯定也调用了Close方法,所以可以尝试后两种方法
不见得吧,楼主贴出的代码里没有close啊 猜测楼主认为CommandBehavior.CloseConnection就是读完数据将连接close掉了[/quote] 你知道这个CommandBehavior.CloseConnection是起什么作用的么,设置了这个属性,在外面只要调用myReader.Close()就会关闭SqlConnection连接,当然myReader是他定义的[/quote] 我想问问大神, CommandBehavior.CloseConnection 是不是关闭的功能? 急着交差啊,急死............ [/quote] 看11楼的解答 剩下的就要问问你到底有没有调用myReader.Close()了.不会用完就不管了吧
  • 打赏
  • 举报
回复
引用 11 楼 sunny906 的回复:
[quote=引用 10 楼 Z65443344 的回复:] [quote=引用 9 楼 sunny906 的回复:] LZ既然用了CommandBehavior.CloseConnection,那么外面肯定也调用了Close方法,所以可以尝试后两种方法
不见得吧,楼主贴出的代码里没有close啊 猜测楼主认为CommandBehavior.CloseConnection就是读完数据将连接close掉了[/quote] 你知道这个CommandBehavior.CloseConnection是起什么作用的么,设置了这个属性,在外面只要调用myReader.Close()就会关闭SqlConnection连接,当然myReader是他定义的[/quote] 我想问问大神, CommandBehavior.CloseConnection 是不是关闭的功能? 急着交差啊,急死............
sunny906 2014-06-27
  • 打赏
  • 举报
回复
引用 10 楼 Z65443344 的回复:
[quote=引用 9 楼 sunny906 的回复:] LZ既然用了CommandBehavior.CloseConnection,那么外面肯定也调用了Close方法,所以可以尝试后两种方法
不见得吧,楼主贴出的代码里没有close啊 猜测楼主认为CommandBehavior.CloseConnection就是读完数据将连接close掉了[/quote] 你知道这个CommandBehavior.CloseConnection是起什么作用的么,设置了这个属性,在外面只要调用myReader.Close()就会关闭SqlConnection连接,当然myReader是他定义的
於黾 2014-06-27
  • 打赏
  • 举报
回复
引用 9 楼 sunny906 的回复:
LZ既然用了CommandBehavior.CloseConnection,那么外面肯定也调用了Close方法,所以可以尝试后两种方法
不见得吧,楼主贴出的代码里没有close啊 猜测楼主认为CommandBehavior.CloseConnection就是读完数据将连接close掉了
sunny906 2014-06-27
  • 打赏
  • 举报
回复
LZ既然用了CommandBehavior.CloseConnection,那么外面肯定也调用了Close方法,所以可以尝试后两种方法
sunny906 2014-06-27
  • 打赏
  • 举报
回复
1、确保SqlDataReader用完之后,把SqlConnection都Close了 2、用DataSet替代SqlDataReader 3、在数据库的连接字符串里设置Max Pool Size的大小,比如Max Pool Size = 256;或者Max Pool Size = 512;
於黾 2014-06-27
  • 打赏
  • 举报
回复
光CONNECT,不CLOSE? 你这样使用,连接池不管设置多大,早晚都会满的. 记得每次连接完,要断开连接. 或者用长连接,程序启动时连接一次. 不能每读一次数据就新建一个连接,读完还不关闭.
fudashouyao 2014-06-27
  • 打赏
  • 举报
回复
从代码来看,是肯定没有关闭连接的。所以,楼主还是在 myReader = comm.ExecuteReader(CommandBehavior.CloseConnection); connection.close() ; 第一句执行完把第二句加上吧,孩子
make1828 2014-06-27
  • 打赏
  • 举报
回复
SqlDataReader 有写这个,你还不关闭连接啊!
  • 打赏
  • 举报
回复
引用 20 楼 Z65443344 的回复:
[quote=引用 18 楼 u010703853 的回复:] [quote=引用 17 楼 Z65443344 的回复:] [quote=引用 16 楼 u010703853 的回复:] 大仙们,我发现了一个问题,就是我在本地调试的时候(没有发布到iis),可以无限次的访问,而且不会卡死,但是一旦发布在iis上,通过其他客户端来访问,访问频繁,系统就会挂掉。是代码的问题,还是iis配置的问题。 我感觉我的代码里面没有问题吧 ,该Close 就close了呀,,,,小鸟,在线等..............
因为你在本地调试的时候,如果结束调试(ctrl+F5),程序所有占用的资源就全部被释放了 但是IIS是一直在运行的,如果你也每隔几分钟就去重启下IIS,连接数据库就也没问题.[/quote] 哦 这样呀 那该怎么弄呢?红孩儿, 你看我的代码 哪地方有问题?[/quote] 因为你只贴出了代码片段,没有完整代码(也不太可能都贴出来),所以也不知道究竟哪里没有close 最好还是像我说的,哪里OPEN就哪里CLOSE,不要太依赖调用它的程序. 读取数据就只返回个数据集对象,写入更新数据就只返回个成功失败或错误码 而不是将数据库连接对象抛出给外面,让外面自己去CLOSE,万一外面忘记CLOSE,那就麻烦大了.[/quote] 恩 你说的对! 我修改了一下,在哪里open 我就在哪里close, 好多了。。。。。 后续有什么问题 我在和大家研讨下 ..........
於黾 2014-06-27
  • 打赏
  • 举报
回复
面向对象的编程原则,低耦合,高复用 获取数据在数据访问层,使用数据在业务逻辑层 你把数据访问层的对象抛出给业务逻辑层使用,万一执行的过程中出现异常,导致没有成功close,整个体系都崩溃了
by_封爱 版主 2014-06-27
  • 打赏
  • 举报
回复
我只能说 发布的东西 少用datareader.. 就算你using 有close 一样死掉.. 而且代码是没问题的 一样会出现"超时时间已到,但是尚未从池中获取连接"的问题.. 所以 当初我做项目的时候遇到这个问题之后 我只能把所有的datareader全部改成了dataset. 之后就在也没有这个错误了...
zhangshuanglili 2014-06-27
  • 打赏
  • 举报
回复
我来学习哒!!!!
加载更多回复(7)

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧