Inicio Foros Lenguajes de programación, desarrollo, código fuente .Net C# VB y PowerShell System.ObjectDisposedException No se puede obtener acceso al objeto desechado Respuesta a: System.ObjectDisposedException No se puede obtener acceso al objeto desechado

#3676
alonsojpd
Superadministrador

El causante del problema puede ser el parámetro pooling=false de tu string de conexión. Cuando usas este parámetro a false estás indicando al motor de base de datos que cuando cierres la conexión con el servidor, en tu caso cuando haces:

conexionBD.Close();

Se cierra completamente, por lo que en la siguiente consulta has de volver a conectarte al servidor por completo y esto suele ser muy costoso. Si en todos tus procedimientos, como en el que nos has pasado de ejemplo, haces un:

conexionBD.Close();

y un

conexionBD.Open();

Por cada proceso de cada usuario que use tu aplicación y por cada procedimiento/función que internamente use la base de datos hará un close y un open, con el consiguiente consumo de recursos, pudiendo llegar a probar el error que nos comentas.

 

Puedes probar a cambiar el parámetro pooling a true, quedando tu código así:

Aunque deberías revisar el código para no hacer un close y open con cada consulta que ejecutas. Sería mucho más eficiente hacer un único open de la conexión durante una sesión.