2011-06-14 12 views
32

necesito utilizar las llamadas a través del dominio de aplicación en mi aplicación, ya veces tengo esta RemotingException:"El objeto se ha desconectado o no existe en el servidor de" excepción

Objeto '/ 2fa53226_da41_42ba_b185_ec7d9c454712/ygiw + xfegmkhdinj7g2kpkhc_7 .rem 'ha sido desconectado o no existe en el servidor.

El objeto de destino sigue vivo, lo he comprobado.

UPD Establecí el punto de corte en el finalizador del objeto de destino, y nunca lo golpea. Por lo tanto, este objeto está vivo y no fue GC.

Respuesta

30

Eso es probablemente porque el recolector de basura local en el servidor recoge el objeto. Puede evitar eso renovando el arrendamiento. Puede leer más sobre esto en estos artículos:

actualización: Por desgracia, los problemas de MSDN Magazine de 2008 o mayor ya no son navegables en línea, pero sólo como .chm archivos que debe descargar a su máquina local. Los problemas anteriores se pueden encontrar en:

+0

No se puede someter a GC porque el servidor guarda referencia a este objeto. – user626528

+1

Si ha deshabilitado la administración de Lifetime, el objeto queda expuesto por comunicación remota (por lo que no puede ser sometido a GC) hasta que lo desconecte en el lado del servidor. – Guillaume

+0

@Guillaume, ¿cómo puedo desconectar la referencia marshall entre dominios? – user626528

12

Esto se debe a la La administración de por vida en el lado del servidor desconecta el objeto cuando expira su concesión, para permitir que GC lo recopile. Si intenta usarlo desde el lado del cliente, recibirá una excepción, incluso si aún no se ha GC'd en el servidor (por ejemplo, porque todavía hay otra referencia) pero el contrato ha expirado. Esto es para evitar un comportamiento impredecible. La respuesta aceptada proporciona una buena referencia sobre cómo administrar correctamente la vida útil de los objetos de .NET remotos.

+1

Gracias por su explicación, votó – Shelest

0

en mi caso, el problema fue que en el equipo cliente, hubo un adaptador de red virtual activo, la desactivación de los adaptadores de red virtuales, el problema se resolvió

0

En mi caso, esto ocurría con SQL LocalDB almacenados en la carpeta App_Data dentro del proyecto Web. Cada vez que intento usar Package Console para ejecutar update-database para iniciar mi base de datos de Entity Framework utilizando migraciones, no ocurre nada. Luego, después de un tiempo, obtengo ese error.

Lo resolví revisando los permisos de archivos en App_Data. Una vez arreglado, voila, funcionó.

Cuestiones relacionadas