符号已加载,但仍无法进入 .Net 源

Eri*_*ikE 5 asp.net debugging debug-symbols visual-studio-2015

我正在尝试查看从调用连接到 Internet 的 Web API 返回的原始响应消息。调用代码如下所示:

object[] results = this.Invoke("MethodName", new object[] { requestObject });
Run Code Online (Sandbox Code Playgroud)

问题是在调试时,results变量已经完全反序列化了,例如我感兴趣的日期属性已经是一个DateTime类型。

所以我做了以下事情:

  1. 关闭“仅启用我的代码”。

  2. 打开“启用 .Net Framework 源步进”。

  3. 启用符号加载并确保 System.Web.Services 模块已加载符号(“符号加载。”):

    System.Web.Services.dll
    C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.Services\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll
    C:\Users\user\AppData\Local\Temp\SymbolCache\System.Web.Services.pdb\312122031d1b4f30b59771eb845018121\System.Web.Services.pdb
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我在以下方法的第 163 行SoapHttpClientProtocol.cs(由我的客户端代码调用的那个)开始放置了一个断点:

    protected object[] Invoke(string methodName, object[] parameters)
    
    Run Code Online (Sandbox Code Playgroud)
  5. 我开始调试项目并使用我的 UI 触发发出请求的代码。当我到达Invoke上面的行并按 F11 时,它会尝试远程调试并进入远程服务器:

    微软视觉工作室

    无法自动进入服务器。连接到服务器机器 'api.example.com' 失败。Visual Studio 2015 远程调试器 (MSVSMON.EXE) 似乎未在远程计算机上运行。这可能是因为防火墙阻止了与远程计算机的通信。请参阅帮助以获取有关配置远程调试的帮助。

    注意:我不想做远程调试,我只想进入 .Net 代码。

    点击 OK 后,它转到我的客户端代码中的下一行,既没有进入 .Net 库,也没有点击我的断点。

  6. 当我在中断模式下查看断点时(指令指针在调用行之后仍然Invoke在线),它是一个空心圆圈,并显示“当前不会命中此断点。此文档没有加载任何符号。”

    这没有任何意义,因为符号已经加载,如上所述。

我如何进入 .Net 源代码,或通过其他方式执行此请求?这个特殊的请求比一些更复杂,因为它需要证书(.pfx 文件)以及用户名和密码。

嗯...一个数据点是我删除的断点位于顶部的文件中:

// Decompiled with JetBrains decompiler
// Type: System.Web.Services.Protocols.SoapHttpClientProtocol
// Assembly: System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// MVID: A6D697F9-972E-41EC-820F-E59621A808B5
// Assembly location: C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Web.Services.dll
Run Code Online (Sandbox Code Playgroud)

我突然觉得这就是差异的来源。JetBrains 是否会干扰我进入 .Net 源代码?

Jac*_*SFT 6

无法自动进入服务器。连接到服务器机器 'api.example.com' 失败。Visual Studio 2015 远程调试器 (MSVSMON.EXE) 似乎未在远程计算机上运行。这可能是因为防火墙阻止了与远程计算机的通信。

所以实际上你只是在本地调试你的 web 应用程序,但是你得到了远程调试错误/警告,对吗?

喜欢这里的文档:

https://msdn.microsoft.com/en-us/library/ms164726.aspx?f=255&MSPPError=-2147217396

如果您在本地调试时收到此消息,则可能是您的防病毒软件或第三方防火墙造成的。Visual Studio 是 32 位应用程序,因此它使用 64 位版本的远程调试器来调试 64 位应用程序。这两个进程使用本地计算机内的本地网络进行通信。没有流量离开计算机,但第三方安全软件可能会阻止通信。

此外,您在讨论后使用正确的步骤来调试 .NET Framework 源代码:

在此处输入图片说明

但是如果你使用的是VS2015,你需要考虑参考源是否已经针对.NET框架进行了更新:

无法进入 .NET 框架源代码

用户的声音在这里:

https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6886255-please-keep-the-reference-source-symbol-server-upd