在数据访问层 DataReader对象后进行读取处理,读取完毕则 Close 该对象。
网站实际运行时候,页面访问几次就提示错误信息:
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
问题在于 DataReader Close 后没有真正关闭其连接对象而造成。
解决方法
数据访问层代码
dataReader = cmd.ExecuteReader();
改为
dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
当 DataReader 执行 Close 时候便会关闭其数据库连接。