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