| Предыдущий | Следующий |
| COMQC_E_BAD_MESSAGE | COMQC_E_UNTRUSTED_ENQUEUER |
COMQC_E_UNAUTHENTICATED
Как расследовать HRESULT COMQC_E_UNAUTHENTICATED
Windows возвращает COMQC_E_UNAUTHENTICATED (0x80110605), когда выполняется следующее условие: Приложение, принимающее только проверенные сообщения, получило сообщение без проверки подлинности.
Для COMQC_E_UNAUTHENTICATED старший бит HRESULT делает значение ошибкой. Константа COMQC_E_UNAUTHENTICATED объявлена в winerror.h и относится к области «очереди компонентов COM+».
Почему важен контекст вызова
Для COMQC_E_UNAUTHENTICATED код относится к COM+ Queued Components. Для COMQC_E_UNAUTHENTICATED здесь важны доступность MSMQ, пригодность интерфейса для очереди, сериализуемость вызова и доверие к отправителю; успешная запись сообщения в очередь ещё не доказывает успешное выполнение серверного компонента.
Для COMQC_E_UNAUTHENTICATED одинаковый HRESULT может быть виден в нескольких слоях. Для COMQC_E_UNAUTHENTICATED в журнале нужно отделить исходный возврат от последующих ошибок очистки, повторов и обёрток.
В имени COMQC_E_UNAUTHENTICATED закодированы ориентиры для расследования: COMQC — технический признак «comqc»; UNAUTHENTICATED — технический признак «unauthenticated». Для COMQC_E_UNAUTHENTICATED эти ориентиры задают конкретный предмет проверки, но не заменяют контракт вызвавшего API.
Интерпретация HRESULT: признаки в имени константы
Для COMQC_E_UNAUTHENTICATED часть COMQC относится к области «технический признак «comqc»». При разборе COMQC_E_UNAUTHENTICATED проверьте, какое состояние этого объекта ожидалось и какое наблюдалось реально.
При разборе COMQC_E_UNAUTHENTICATED обозначение UNAUTHENTICATED связывает код с темой «технический признак «unauthenticated»». До повторной проверки COMQC_E_UNAUTHENTICATED сохраните входные данные без нормализации.
Для COMQC_E_UNAUTHENTICATED в техническом контексте особенно важны: цепочка сертификатов, проверка отзыва, провайдер. При расследовании COMQC_E_UNAUTHENTICATED их следует проверять как связанные части одной операции, а не как независимые симптомы.
Минимальный набор свидетельств
- В первичном журнале по
COMQC_E_UNAUTHENTICATEDнужно сохранить имя очереди, Message ID и Correlation ID. - На границе сбоя по
COMQC_E_UNAUTHENTICATEDнужно записать интерфейс, IID и вызываемый метод queued-компонента. - Для сравнения с исправным случаем по
COMQC_E_UNAUTHENTICATEDнужно проверить состояние MSMQ, права очереди и учётную запись слушателя. - До повторной попытки по
COMQC_E_UNAUTHENTICATEDнужно сохранить тело и свойства проблемного сообщения до его перемещения. - Для воспроизводимого отчёта по
COMQC_E_UNAUTHENTICATEDнужно зафиксировать AppID COM+ приложения и параметры Queuing Enabled/Listen.
Как локализовать причину
- Для
COMQC_E_UNAUTHENTICATED: Проверить, что интерфейс отмечен как queueable и параметры метода допускают маршалинг; отдельно отметьте изменение состояния объекта. - Для
COMQC_E_UNAUTHENTICATED: Проверить создание и доступность очереди приложения COM+; все остальные условия оставьте неизменными. - Для
COMQC_E_UNAUTHENTICATED: Сопоставить отправителя сообщения с политикой аутентификации и доверия; не удаляйте исходные данные до завершения сравнения. - Для
COMQC_E_UNAUTHENTICATED: Повторить вызов с минимальным набором параметров и проследить Message ID до получателя; повторите шаг на исправном контрольном примере. - Для
COMQC_E_UNAUTHENTICATED: Подтвердить не только удаление сообщения из очереди, но и завершение серверной транзакции; сохраните первый hresult и точное время результата.
Как доказать исправление
Корректирующее действие для COMQC_E_UNAUTHENTICATED должно устранять условие «Приложение, принимающее только проверенные сообщения, получило сообщение без проверки подлинности» на уровне цепочка сертификатов. Для COMQC_E_UNAUTHENTICATED простое подавление HRESULT, бесконечный повтор или очистка всех настроек не доказывают восстановление контракта.
Для COMQC_E_UNAUTHENTICATED зафиксируйте результат до и после изменения одними и теми же средствами. Для COMQC_E_UNAUTHENTICATED сравнивайте не только HRESULT, но и конечное состояние объекта, побочные эффекты и события подсистемы.
Почему queued-сообщение отклонено
COMQC_E_UNAUTHENTICATED означает, что принимающее COM+-приложение требует проверенные сообщения, а конкретное сообщение не содержит подтверждённой MSMQ-идентичности. Это не эквивалентно обычному отказу роли внутри уже запущенного компонента.
При проверке COMQC_E_UNAUTHENTICATED сохраните свойства сообщения, параметры Authentication Level очереди и сертификат отправителя. Затем сравните их с политикой принимающего приложения и доверенными сертификатами MSMQ.
- Для
COMQC_E_UNAUTHENTICATEDне включайте приём непроверенных сообщений как временное постоянное решение. - Для
COMQC_E_UNAUTHENTICATEDподтвердите аутентификацию на одном тестовом сообщении. - Для
COMQC_E_UNAUTHENTICATEDпроверьте, что после проверки сохраняется ожидаемая личность отправителя.
Полезные материалы
- Microsoft: COM коды ошибок — COMQC_E_UNAUTHENTICATED
- Microsoft: Microsoft: using the queue moniker — COMQC_E_UNAUTHENTICATED
- Microsoft: Microsoft: COM+ queued components tasks — COMQC_E_UNAUTHENTICATED
- Microsoft: Microsoft: Message Queuing — COMQC_E_UNAUTHENTICATED
- Очереди компонентов COM+ — COMQC_E_UNAUTHENTICATED
Нужно найти другой код? Найти другой код состояния или ошибки.
