释放连接池中的连接。
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
语句也将负责处理连接。
所以我以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
语句也将负责处理连接。