ERROR_WINHTTP_NAME_NOT_RESOLVED 将 dbghelp 作为服务使用时

ERROR_WINHTTP_NAME_NOT_RESOLVED when using dbghelp as a service

我正在尝试设置一个符号代理服务器,它同时针对我们自己的内部符号存储 (UNC) 和 http 服务器(Microsoft 是其中之一)。我希望它 运行 作为一项服务,或作为 IIS(当然 运行 作为一项服务)。

我试过了Micrsoft SymProxy, and am now trying 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[=11=]C3B0BCF250566567FA913502B5677C81\kernelbase.pdb - path not found
SYMSRV:  UNC: C:\SymProxy\cache\kernelbase.pdb[=11=]C3B0BCF250566567FA913502B5677C81\kernelbase.pd_ - path not found
SYMSRV:  UNC: C:\SymProxy\cache\kernelbase.pdb[=11=]C3B0BCF250566567FA913502B5677C81\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[=12=]C3B0BCF250566567FA913502B5677C81\kernelbase.pdb - path not found
SYMSRV:  UNC: C:\SymProxy\cache\kernelbase.pdb[=12=]C3B0BCF250566567FA913502B5677C81\kernelbase.pd_ - path not found
SYMSRV:  UNC: C:\SymProxy\cache\kernelbase.pdb[=12=]C3B0BCF250566567FA913502B5677C81\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(或可能更新的版本)一起使用。我对中间版本一无所知。