如何解决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(或可能更新)。我对中间版本一无所知。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。