日期:2014-05-18  浏览次数:20617 次

高分求救,关于连接超时的解决方法。
ASP.NET的网站,基本上要连接数据库的地方都是用代码无没有使用数据控件,例如:
VB.NET code

        Dim connectionString As String = ConfigurationManager.ConnectionStrings("HMZXConnectionString").ConnectionString
        Dim cnHMZX As New SqlConnection(connectionString)
        Dim command As New SqlCommand("News_Top10", cnHMZX)
        command.CommandType = CommandType.StoredProcedure
        Dim oDR As SqlDataReader
        cnHMZX.Open()
        oDR = command.ExecuteReader()
        dtlNews.DataSource = oDR
        dtlNews.DataBind()
        oDR.Close()
        cnHMZX.Close()
        cnHMZX.Dispose()



但这个网站运行一段时间就会出现“连接超时”的错误。

目前,我只能在服务器的“默认连接池”中设置了“按时间来回收”,这样才勉强解决问题,但这并不是好的解决办法。

不是说ASP.NET可以自动回收资源吗?我在代码中,每次打开连接后都是用完即关的了,还能怎么办?

------解决方案--------------------

看看sql是不是还可以优化一下
------解决方案--------------------
去数据库里看这个存储过程, 单独在数据库中运行要多久, 然后再考虑解决方案
------解决方案--------------------
设置超时时间

使用缓存
------解决方案--------------------
探讨

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

如果在连接字符串中加入“Pooling=False”,不用连接池,不知道会怎样?

------解决方案--------------------
探讨

google了很久,在connectionString中加入“Max Pool Size = 512;”,出错就少很多了,不知道这个Max Pool Size最大可以设置为多少?

------解决方案--------------------
连接对象在Open后的操作都放在try块中,后面跟一个finally块:conn.Close();
SqlDataReadera用了要关掉