我在几台服务器上运行 IIS 8.5,并在虚拟目录上启用了 BITS 上传。查看日志,我看到几种不同类型的错误,其中显示(bits_error:{GUID},500,0x80070070)
或其他错误代码。我可以使用 PowerShell cmdlet 并访问 ErrorDescription 属性将这些错误与客户端上的错误描述相匹配Get-BitsTransfer
,但前提是我碰巧是遇到错误的客户端。
我看到的具体代码是
- 0x800703E3
- 0x80070070
- 0x80070005-我假设这是E_ACCESSDENIED
- 0x8020001F-BG_E_SESSION_NOT_FOUND,至少在客户端
- 0x80070585 - 我已确认该错误有“无效索引”的描述,但似乎找不到任何提供更多上下文的信息。(我认为这台特定服务器存在配置问题,我无法确定原因,因为无法上传到该服务器。其他错误来自“正常运行”的服务器。)
我确信还会有更多。BitsMsg.h其中包括一些常见的。
如能提供关于 IIS 日志文件中 BITS_POST 条目的完整错误代码列表的更多详细信息,我们将不胜感激。
更新:使用失败请求跟踪,我能够看到有关无效索引错误 (0x80070585) 的更多信息。我在 SysInternals 进程监视器中看不到虚拟目录上的任何活动,在使用句柄时也看不到计算机上对该目录打开的任何句柄。但是,我已验证在 IIS 管理器中存储的绑定到该虚拟目录的凭据正在工作,当我执行测试连接时,我在 procmon 中看到 INetMgr.exe 确实访问了我期望的本地目录。无论如何,这是跟踪文件中有趣的部分。似乎我们正在进入 BITS 服务 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 更新错误代码,SUS_E_INVALIDINDEX
即SUS_S_ALREADY_UNINSTALLED
,这意味着“要卸载的更新尚未安装 - 尝试使用无效索引。”由于 Windows 更新使用 BITS 协议,所以他们所说的索引可能是作业中的文件索引。但是,BITS 上传作业最多只有一个文件,该文件的十六进制值为 0x80240007。
另请参阅 WU_E_INVALIDINDEX 和此StackOverflow 答案。