ERROR_WINHTTP_NAME_NOT_RESOLVED 使用 dbghelp 作为服务时

问题描述

我正在尝试设置一个以我们自己的内部符号存储 (UNC) 和 http 服务器(微软就是其中之一)为目标的符号代理服务器。我希望它作为服务运行,或者作为 IIS(当然是作为服务运行)。

我已经尝试过 Micrsoft SymProxy,现在正在尝试 pySymProxy。 当我从桌面运行 pySymProxy 时,它工作得很好,但在作为服务运行时(/通过 IIS)出现此 WINHTTP 错误。

我尝试了所有提到的 here 修复,包括使用 DBGHELP_WININET 和设置注册表设置。这些根本没有效果。我相信这些信息现在已经过时了,但我找不到任何地方可以表明对此的最新建议是什么。我也不明白根本问题是什么。到目前为止,我尝试过的每种方法都告诉我,我并不支持代理。 WinHttp 说它没有在日志条目中使用代理,那么为什么它不能像从桌面运行时那样简单地解析一个名称?

来自我的日志的示例,当它从服务运行时失败:

SYMSRV:  BYINDEX: 0x4
         C:\SymProxy\cache*http://msdl.microsoft.com/download/symbols
         kernelbase.pdb
         0C3B0BCF250566567FA913502B5677C81
SYMSRV:  UNC: C:\SymProxy\cache\kernelbase.pdb\0C3B0BCF250566567FA913502B5677C81\kernelbase.pdb - path not found
SYMSRV:  UNC: C:\SymProxy\cache\kernelbase.pdb\0C3B0BCF250566567FA913502B5677C81\kernelbase.pd_ - path not found
SYMSRV:  UNC: C:\SymProxy\cache\kernelbase.pdb\0C3B0BCF250566567FA913502B5677C81\file.ptr - path not found
SYMSRV:  WinHttp interface using proxy server: none
SYMSRV:  HTTPGET: /download/symbols/index2.txt
SYMSRV:  WinHttpSendRequest: 800C2EE7 - ERROR_WINHTTP_NAME_NOT_RESOLVED
SYMSRV:  HTTPGET: /download/symbols/kernelbase.pdb/0C3B0BCF250566567FA913502B5677C81/kernelbase.pdb
SYMSRV:  WinHttpSendRequest: 800C2EE7 - ERROR_WINHTTP_NAME_NOT_RESOLVED
SYMSRV:  RESULT: 0x800C2EE7

从桌面运行时完全正常工作的示例:

SYMSRV:  BYINDEX: 0x4
         C:\SymProxy\cache*http://msdl.microsoft.com/download/symbols
         kernelbase.pdb
         0C3B0BCF250566567FA913502B5677C81
SYMSRV:  UNC: C:\SymProxy\cache\kernelbase.pdb\0C3B0BCF250566567FA913502B5677C81\kernelbase.pdb - path not found
SYMSRV:  UNC: C:\SymProxy\cache\kernelbase.pdb\0C3B0BCF250566567FA913502B5677C81\kernelbase.pd_ - path not found
SYMSRV:  UNC: C:\SymProxy\cache\kernelbase.pdb\0C3B0BCF250566567FA913502B5677C81\file.ptr - path not found
SYMSRV:  HTTPGET: /download/symbols/index2.txt
SYMSRV:  HttpQueryInfo(HTTP_QUERY_CONTENT_LENGTH): 800C2F76 - ERROR_HTTP_HEADER_NOT_FOUND
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/kernelbase.pdb/0C3B0BCF250566567FA913502B5677C81/kernelbase.pdb
SYMSRV:  HttpQueryInfo: 801900c8 - HTTP_STATUS_OK
SYMSRV:  kernelbase.pdb from http://msdl.microsoft.com/download/symbols: 7687168 bytes -

解决方法

解决此问题的一个(不是特别好)的方法是使用旧版本的 dbghelp.dll 和 symsrv.dll,它们仍然支持 DBGHELP_WININET 标志。

这也被原 dbg 作者确认为无法解决的问题 here。由于 MS 符号服务器会自动重定向到 https,因此根据我的理解,无法将 WinHTTP 用于 SymProxy 与它们一起工作。

我已经在 dbghelp 版本 6.11.1.404 中确认了这一点。我已经确认它不适用于 dbghelp 10.0.15063.400(或可能更新)。我对中间版本一无所知。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...