有关asp.net中最大池大小的问题

时间:2011-06-07 09:53:53

标签: c# asp.net connection-pooling

我一直在项目中使用一个小文件管理器模块,其中一个文件夹列表显示在树视图中。我已经在javascript中做了所有的事情。每次我点击一个节点时,数据列表都会被提取到一个数据加载器并填充在前端。 但是当我在IIS中部署应用程序时,在大约18次后续点击后,IIS将暂停,我必须重新重置它。当我检查事件查看器时,我收到以下错误

  

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

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

但我想知道以这种方式使用连接池大小是一个好习惯。或者我们如何阻止打开这么多连接。 谢谢!

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

SQL Server的示例连接字符串:

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

这样做可能会对你有所帮助:)。

最大泳池大小的默认值为100。 只要服务器的性能不是问题,您也可以将其设置为更高的数字。