2011-06-07 61 views
1

我一直在研究项目中的一个小文件管理器模块,其中文件夹列表显示在树视图中。我已经在JavaScript中完成了所有的事情。每次我点击一个节点时,数据列表都会被提取到一个数据读取器中并填充到前端。 但是,当我在IIS中部署应用程序时,在大约18次后续点击之后,IIS被暂停,我必须重新设置它。当我检查事件查看器时,出现以下错误:有关asp.net中最大池大小的问题

异常类型:InvalidOperationException异常消息:超时已过期。在从池中获取连接之前已超时。发生这种情况的原因可能是因为所有连接池都在使用中,并且达到最大池大小。

因此,在我的web.config连接字符串中,我将pooling设置为True,并将最大池大小设置为200,问题就解决了。

但我不知道是否这样使用连接池大小是一个好习惯。或者我们如何防止打开这么多的连接。 谢谢!

回答

6

我认为发生的事情是您不释放未使用的资源。更具体地说,您绝对必须在所有与数据库相关的对象上调用Dispose(),如SqlConnectionSqlDataReader等。或者,更好的是,将它们包装在using语句中。对于SQL Server

+0

实际上即时关闭连接。在datareader中我明确地调用reader.Close(),是否需要Dispose()方法? – Paras 2011-06-07 09:59:08

+0

是的,你不需要打电话给reader.close()等等...... – 2011-06-07 10:00:50

1

样本连接字符串:

"Data Source=(local);Initial Catalog=pubs;User ID=sa;Password=;Max Pool Size=75;Min Pool Size=5;" 

做这样可以帮助你:)

最大池大小的默认值为100 你可以将其设置为一个较大的数字也至于性能的服务器是不是一个问题..

+0

thnks伙计!但问题是,最大池大小为100的还是越来越少,当用户数增加时会发生什么? – Paras 2011-06-07 10:00:57