Что означает код HRESULT 0xC00E0050 (MQ_ERROR_TRANSACTION_USAGE)?

 
Предыдущий Следующий
MQ_ERROR_TRANSACTION_IMPORT MQ_ERROR_TRANSACTION_SEQUENCE

MQ_ERROR_TRANSACTION_USAGE

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

MQ_ERROR_TRANSACTION_USAGE (0xC00E0050) — Запрошенное действие нельзя выполнить внутри транзакции.

Результат 0xC00E0050 пришёл из подсистемы «COM/WinRT» при работе с областью «контракт вызываемого interface, аргументы и state объекта». Для сообщения «запрошенное действие нельзя выполнить внутри транзакции» практический предмет проверки — «mq, transaction, usage».

Что проверить и как подтвердить исправление

Не начинайте с общего сброса компонента: сопоставьте первый отказ с фактическими параметрами операции. При 0xC00E0050 и условии «запрошенное действие нельзя выполнить внутри транзакции» воспроизведите отказ на минимальном объекте и меняйте только одно условие за запуск, чтобы отделить неверный вход от состояния системы.

Перед повтором 0xC00E0050 зафиксируйте IID и method, thread/apartment, argument values, object state и исходный HRESULT; отдельно запишите ID, HRESULT. Различия по теме «mq, transaction, usage» для 0xC00E0050 покажут, изменился ли первый неуспешный этап.

Коррекция для 0xC00E0050 должна быть предметной: исправьте параметры и жизненный цикл объекта в соответствии с контрактом первого неуспешного метода. Для 0xC00E0050 и сообщения «запрошенное действие нельзя выполнить внутри транзакции» общий сброс допустим лишь как контроль, но не как доказательство причины.

Подтвердите изменение повтором исходной операции: результат 0xC00E0050 не должен возникать на исправном объекте, но прежний отрицательный контроль обязан оставаться предсказуемым.

Документация для результата 0xC00E0050: enable MS DTC diagnostic tracing · destination queues · Message Queuing error and information codes.


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