Что означает код HRESULT 0x8004E007 (CONTEXT_E_OLDREF)?

 
Предыдущий Следующий
CONTEXT_E_SYNCH_TIMEOUT CONTEXT_E_ROLENOTFOUND

CONTEXT_E_OLDREF

Что означает CONTEXT_E_OLDREF

CONTEXT_E_OLDREF означает, что компонент COM+ получил вызов через ссылку, связанную с транзакцией или контекстом, который уже был committed или aborted.

Такая ссылка больше не представляет действующий контекст для side-effecting метода, даже если сам объект ещё видим вызывающему коду.

Что проверить

  • Сопоставьте получение ссылки с моментом завершения COM+ transaction.
  • Проверьте callbacks и отложенную работу, которые переживают родительский контекст.
  • Не повторяйте изменяющий состояние метод, пока неизвестно, был ли исходный вызов зафиксирован.
  • Для контроля получите свежий component context и повторите безопасную операцию.

Исправление — не хранить транзакционную ссылку дольше допустимого жизненного цикла. Новый контекст следует получать там, где начинается новая логическая транзакция.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.