释放连接池中的连接。

Releasing connections in a connection pool.

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

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

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

"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached."

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

任何建议......

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

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

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

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

using 语句也将负责处理连接。