所以我以COM DLL的形式继承了一个软件程序。 (没有源代码,只有setup.exe)
DLL通过ADO.NET连接到Active Directory,并通过方法传回字符串以验证用户身份。 (这最多需要一秒钟)
问题是,对于每个经过身份验证的用户,它会在连接池中打开一个连接,但似乎不会关闭它。因此,在100次尝试后,我收到错误:
“超时已过期。从池中获取连接之前已经过了超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。”
我的问题是:如何在连接池达到100时重置连接池? 可能有一个注册表设置,我可以更改最大连接数? 也许写一个每小时左右运行的脚本并清除池? 理想情况下,使用正确的参数来修复连接字符串会很好,但是这里没有。
任何建议......
答案 0 :(得分:2)
确保在使用完毕后关闭连接。您可以显式调用close方法
//do something with the conn
conn.Close();
或
使用using
块,一旦执行使用块内的代码,它将负责关闭连接
using(var conn=new SqlConnection("YourConnectionStringHere"))
{
conn.Open();
// do something
}
using
语句也会处理连接。