У меня запущен IIS 8.5 на нескольких серверах с включенными загрузками BITS в виртуальном каталоге. Просматривая журналы, я вижу несколько разных видов ошибок, где говорится (bits_error:{GUID},500,0x80070070)
или какой-то другой код ошибки. Я могу сопоставить их с описаниями ошибок на стороне клиента, используя Get-BitsTransfer
командлет PowerShell и доступ к атрибуту ErrorDescription, но только если я являюсь клиентом, столкнувшимся с ошибкой.
Конкретные коды, которые я вижу, это
- 0x800703E3
- 0x80070070
- 0x80070005 — Я предполагаю, что это E_ACCESSDENIED
- 0x8020001F - BG_E_SESSION_NOT_FOUND, по крайней мере на стороне клиента
- 0x80070585 — я подтвердил, что это имеет описание «недопустимый индекс», но не могу найти никакой информации, дающей больше контекста. (Я думаю, что у этого конкретного сервера есть проблема с конфигурацией, которую я не могу указать, поскольку никакие загрузки на него не работают. Другие ошибки исходят от сервера, который «работает».)
Я уверен, что их больше.BitsMsg.hвключает в себя некоторые из наиболее распространенных.
Буду признателен за любые ссылки на более подробную информацию о полном списке кодов ошибок для записей BITS_POST в файлах журнала IIS.
Обновлять:Используя трассировку невыполненных запросов, я могу увидеть немного больше информации об ошибке Invalid Index (0x80070585). Я не вижу никакой активности в виртуальном каталоге в SysInternals Process Monitor, и я не вижу никаких дескрипторов, открытых для этого каталога на машине при использовании Handle. Однако я проверил, что учетные данные, сохраненные для привязки к этому виртуальному каталогу в IIS Manager, работают, и когда я выполняю тестовое соединение, я вижу в procmon, что INetMgr.exe действительно получил доступ к локальному каталогу, к которому я и ожидал. В любом случае, вот интересный фрагмент из файла трассировки. Похоже, мы добираемся до библиотеку BITS Service dll и задыхаемся внутри нее.
ISAPI_START
CALL_ISAPI_EXTENSION
DllName="C:\Windows\system32\bitssrv.dll"
MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER",
HttpStatus="500", HttpReason="Internal Server Error",
HttpSubStatus="0", ErrorCode="The operation completed successfully.(0x0)",
ConfigExceptionInfo=""
GENERAL_SET_RESPONSE_HEADER HeaderName="Pragma", HeaderValue="no-cache", Replace="false" 14:20:19.559
GENERAL_SET_RESPONSE_HEADER HeaderName="BITS-packet-type", HeaderValue="Ack", Replace="false" 14:20:19.559
GENERAL_SET_RESPONSE_HEADER HeaderName="BITS-Error", HeaderValue="0x80070585", Replace="false" 14:20:19.559
GENERAL_SET_RESPONSE_HEADER HeaderName="BITS-Error-Context", HeaderValue="0x5", Replace="false" 14:20:19.559
GENERAL_SET_RESPONSE_HEADER HeaderName="Content-Length", HeaderValue="0", Replace="false" 14:20:19.559
ISAPI_EXTENSION_DONE 14:20:19.559
ISAPI_END
Последняя подсказка заключается в том, что для записей в журнале, где я вижу ошибку 0x80070585, нет GUID задания, указанного после bits_error
. Это просто (bits_error:,500,0x80070585). Как будто желаемый удаленный путь для загрузки появляется, но он дает сбой на очень раннем этапе протокола загрузки.
Обновление 2:Существует потенциально связанный код ошибки Windows Update , SUS_E_INVALIDINDEX
также известный как SUS_S_ALREADY_UNINSTALLED
, который означает "Обновление, которое должно быть удалено, уже не установлено — была предпринята попытка использовать недопустимый индекс". Поскольку Windows Update использует протокол BITS, возможно, индекс, о котором они говорят, — это индекс файла в задании. Однако задания по загрузке BITS всегда содержат максимум один файл, и шестнадцатеричное значение для него равно 0x80240007.
См. также WU_E_INVALIDINDEX и этоОтвет StackOverflow.