0

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

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

我已经尝试了这里提到的每一个修复,包括使用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 -
4

1 回答 1

1

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

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

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

于 2021-03-23T12:50:13.143 回答