| Предыдущий | Следующий |
| NS_E_PROXY_ACCESSDENIED | NS_E_NETWORK_SINK_WRITE |
NS_E_PROXY_SOURCE_ACCESSDENIED
NS_E_PROXY_SOURCE_ACCESSDENIED: данные, граница и повторная проверка
Практический смысл этот результат (0xC00D2EF7) означает не общий «сбой медиа», а конкретное условие: прокси-сервер не смог успешно аутентифицироваться на исходном медиасервере. Это локализует сбой на конкретном этапе потоковой передачи и определяет, какие данные нужно сохранить до следующей попытки.
Запрос потоковой передачи Windows Media проходит разрешение имени, выбор прокси, согласование протокола, аутентификацию, создание сеанса и доставку пакетов. WMSP и связанные протоколы хранят состояние сеанса, поэтому установленное TCP-соединение само по себе не подтверждает работоспособный медиасеанс. Сохраните самый ранний результат нижнего уровня: оболочки могут свести несколько разных причин к одному HRESULT.
Сетевые и протокольные данные
| Зафиксируйте | Как это помогает выделить этот результат |
|---|---|
| Ответственный вызов | Запишите метод API, идентификатор объекта, поток выполнения или обратный вызов и временную метку этого этапа. |
| Решающие значения | Исходный URL медиаресурса, источник настроек прокси, узел и порт прокси-сервера, результат DNS, запрос аутентификации, статус ответа прокси и ответ исходного сервера, если он был получен. |
| Поколение объекта | Отметьте время создания объекта чтения, объекта записи, графа, URL-объекта, сеанса потоковой передачи или поставщика метаданных; устаревшее состояние может повторно вызвать этот результат после изменения конфигурации. |
| Первый вложенный результат | Сохраните самый ранний статус кодека, COM, сокета, DNS, анализатора или поставщика до этого результата; более поздние сообщения интерфейса менее конкретны. |
| Случай для сравнения | Используйте один заведомо исправный ресурс, проходящий ту же контрольную точку потоковой передачи, и изменяйте только отклонённое предусловие. |
Структура сбоя
Эта граница достигается, когда прокси-сервер не может аутентифицироваться на исходном медиасервере. после него.
В качестве отрицательного контроля один раз повторите запрос с тем же явно заданным прокси и один раз — с прямым соединением, сохранив URL медиаресурса и идентификатор аутентификации. Если появляется более поздний HRESULT, эта контрольная точка пройдена, а новый код относится к другому этапу.
Близкие результаты не взаимозаменяемы
Главное различие: прокси-сервер принял клиентский запрос, но не смог аутентифицироваться на исходном сервере.
| Близкий HRESULT | Как его сравнивать |
|---|---|
NS_E_PLAYLIST_ENTRY_HAS_CHANGED | Команда всё ещё ссылается на уже изменившееся поколение элемента списка воспроизведения |
NS_E_PROXY_ACCESSDENIED | прокси-сервер отклонил контекст аутентификации или авторизации клиента |
NS_E_NETWORK_SINK_WRITE | Приёмник потоковой передачи завершился ошибкой при записи медиаданных в сетевое соединение |
Повторная проверка с тем же протоколом
- Запишите
0xC00D2EF7, он, точную операцию и время первого сбоя на этой контрольной точке. - Сохраните исходный URL медиаресурса, источник настроек прокси, узел и порт прокси-сервера, результат DNS, запрос аутентификации, статус ответа прокси и ответ исходного сервера, если он был получен.
- Не используйте повторно граф, сеанс, объект чтения или объект метаданных, созданный до изменения соответствующей конфигурации или ресурса.
- Выполните один изолированный тест: один раз повторите запрос с тем же явно заданным прокси, второй — с прямым соединением, сохранив URL медиаресурса и идентификатор аутентификации.
- Повторите проверку через тот же API и протокольный путь; другой проигрыватель или локальная копия полезны только для сравнения и сами по себе не доказывают исправление сбойной операции.
- Подтвердите ожидаемое следующее состояние и сохраните новый HRESULT, если он появился, как отдельный результат следующего этапа.
Интерпретация следующего сетевого состояния
| Результат повторной проверки | Толкование для него |
|---|---|
| Тот же вызов по-прежнему возвращает код | Значения исходного запроса не изменились либо вызывающая сторона всё ещё использует старое поколение объекта. |
| Новый объект работает успешно | Время жизни или кэшированное состояние способствовало появлению он; исправьте пересоздание объекта вместо общесистемного обходного решения. |
| Вызов доходит до другого HRESULT | зафиксированная граница пройдена. Диагностируйте новый код отдельно на его собственном этапе формата, графа, URL, сети или метаданных. |
| Сбой возникает только для одного ресурса | Данные указывают на содержимое, URL, точку публикации, поток, атрибут или состояние конкретного объекта, а не на общий отказ системы. |
Действия, вводящие в заблуждение
- Не публикуйте пароли в журналах и не считайте каждый отказ авторизации следствием неверного пароля без проверки остальных данных.
- Не стирайте данные о первом появлении он многократными повторами: обратные вызовы и повторные соединения могут заменить полезное исходное состояние более поздней ошибкой верхнего уровня.
- Не публикуйте учётные данные, материалы защищённого содержимого или полные закрытые URL. Записывайте обезличенные идентификаторы, длины, хэши и поля протокола, необходимые для воспроизведения исходной границы.
Технические ссылки
- Обзор протокола потоковой передачи Windows Media по HTTP
- Получение ответа WMSP
- Взаимодействие Windows Media с прокси-сервером
- Связи протоколов потоковой передачи Windows Media
- Реестр HRESULT Microsoft
Считайте он устранённым только после того, как тот же путь API проходит эту контрольную точку; успех в другом проигрывателе или с кэшированной копией является лишь дополнительным свидетельством.
Нужно найти другой код? Найти другой код состояния или ошибки.