释放连接池中的连接。

时间:2016-04-11 14:27:21

标签: c# sql active-directory ado.net

所以我以COM DLL的形式继承了一个软件程序。 (没有源代码,只有setup.exe)

DLL通过ADO.NET连接到Active Directory,并通过方法传回字符串以验证用户身份。 (这最多需要一秒钟)

问题是,对于每个经过身份验证的用户,它会在连接池中打开一个连接,但似乎不会关闭它。因此,在100次尝试后,我收到错误:

“超时已过期。从池中获取连接之前已经过了超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。”

我的问题是:如何在连接池达到100时重置连接池? 可能有一个注册表设置,我可以更改最大连接数? 也许写一个每小时左右运行的脚本并清除池? 理想情况下,使用正确的参数来修复连接字符串会很好,但是这里没有。

任何建议......

1 个答案:

答案 0 :(得分:2)

确保在使用完毕后关闭连接。您可以显式调用close方法

//do something with the conn
conn.Close();

使用using块,一旦执行使用块内的代码,它将负责关闭连接

using(var conn=new SqlConnection("YourConnectionStringHere"))
{
  conn.Open();
  // do something
}

using语句也会处理连接。