¿Qué significa el código HRESULT 0x8004E007 (CONTEXT_E_OLDREF)?

 
Anterior Siguiente
CONTEXT_E_SYNCH_TIMEOUT CONTEXT_E_ROLENOTFOUND

CONTEXT_E_OLDREF

Qué significa CONTEXT_E_OLDREF

CONTEXT_E_OLDREF corresponde al HRESULT 0x8004E007. Windows indica: «Se realizó una llamada a un método de un componente COM+ cuya transacción ya se confirmó o anuló.».

La causa debe buscarse en lifecycle del contexto de objeto y servicios contextuales de COM+. Para esta constante, La referencia pertenece a un contexto o activación ya obsoletos; vuelve a adquirirla desde el contexto vigente. La traza útil debe incluir object context/activity ID, JIT activation, referencia de objeto, flags de contexto y método que solicita el servicio contextual.

Qué comprobar

  • Obtén object context/activity ID, JIT activation, referencia de objeto, flags de contexto y método que solicita el servicio contextual en la misma llamada que devuelve el HRESULT y no reinicies COM+ antes de guardar esa evidencia.
  • Verifica que «Se realizó una llamada a un método de un componente COM+ cuya transacción ya se confirmó o anuló.» describe el objeto actual y no otro AppID, partición, CLSID, mensaje o contexto con un nombre parecido.

Tratamiento recomendado

Respeta el lifecycle del contexto y las reglas de JIT/referencias contextuales. Obtén los servicios dentro de un contexto válido y vuelve a adquirir referencias obsoletas en lugar de reutilizarlas fuera de su activación.

Cómo distinguirlo de resultados cercanos

  • CONTEXT_E_ABORTING no es equivalente; su descripción es «Se realizó una llamada a un método de un componente COM+ cuya transacción ya se anuló o está en proceso de anulación.».
  • CONTEXT_E_NOTRANSACTION sirve como contraste porque significa «La operación solicitada requiere que el contexto actual tenga una transacción, pero no la tiene.».

Cierra el diagnóstico repitiendo la acción desde un estado conocido y comprobando que «Se realizó una llamada a un método de un componente COM+ cuya transacción ya se confirmó o anuló.» deja de ser cierto; cualquier código distinto merece su propio análisis.

Referencias técnicas


¿Buscas un código diferente? Buscar otro código de estado o error.