【问题标题】:Web API returns results but doesn't hit breakpoint even when symbols are correctly loadedWeb API 返回结果但即使正确加载符号也不会命中断点
【发布时间】:2017-08-09 17:21:52
【问题描述】:

这是发生在我身上最奇怪的事情,所以请听我说完。

  1. 符号正在正确加载。所以这不是问题。
  2. API 工作正常,数据有效。
  3. 我在同一个项目中有 2 个控制器。当我发出 GET 请求时,一个控制器的断点被命中。但是第二个控制器的断点没有被命中。但是,它确实会正确返回结果。

我在构造函数级别设置了一个断点(并且在其他地方都尝试过),但不确定出了什么问题。

代码是非常普通的 C# MVC web api。

有谁知道什么可能导致这种行为?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-web-api


    【解决方案1】:

    我有类似的问题 - 试试这个网站可能会有所帮助 breakpoint issue

    同时尝试强制断点 System.Diagnostics.Debugger.Break();

    【讨论】:

    • 刚试过。它仍然没有击中。现在看看你的链接。谢谢!
    • 单击解决方案文件的属性 > 启动项目。选择多个启动项目并选择您的站点和服务作为启动选择
    【解决方案2】:

    我喜欢使用的一个技巧是使用Exceptions。首先,您将“坏”Controller 中的一些公共方法更改为无条件的throw 一些虚拟Exception。然后从任何使用你的 WebAPI 调用该方法,并确保 Exception 实际被抛出。有时有些东西被缓存了,而代码实际上并没有被重新编译。

    然后附加您的调试器并查看它是否捕获Exception。您可能附加到了错误的进程。

    接下来将代码修改为throwcatchException 并记录它。这里的诀窍是 VS 调试器有一个选项,即使在捕获的又名“用户处理”异常时也可以停止:请参阅配置 here for VS up to 2013here for VS 2015+。然后您可以查看符号是否实际与代码匹配。

    【讨论】:

      【解决方案3】:

      工作但未命中断点的控制器是否输出缓存正在生成的任何内容?如果是,则数据将由缓存它的任何东西返回,并且不会实例化控制器。

      尚不清楚您使用的是 MVC 还是 WebAPI 控制器,或者您正在返回什么。但是,如果它是 MVC,您可以查找 [OutputCache()] 属性。您还可以留意可能会添加的其他与缓存相关的标头。

      根据缓存策略,您可以通过添加随机查询字符串值来规避它,以便它必须创建一个新的缓存键。例如:

      http://example.com/some/path/1234?cow=moo
      

      【讨论】:

        【解决方案4】:

        我刚才在写下之前遇到了同样的问题...尝试转到您的 webapi 属性并比较在 web 部分中找到的项目 url 是否与您网站的 webconfig 文件中指定的 url 相同。至于我的问题,网站正确指向了 webapi,这允许读取 webapi 中的任何代码更改,但是调试器指向错误的位置,因此它无法读取您放置的任何断点。

        【讨论】:

          【解决方案5】:

          试试这个

          1.转到项目“构建设置”

          2.搜索调试

          3.在Apple Clang下-代码生成检查“优化级别”

          4.将调试设置为无[-OO]

          【讨论】:

            猜你喜欢
            • 2019-12-10
            • 1970-01-01
            • 1970-01-01
            • 2011-03-02
            • 2023-04-05
            • 2017-11-28
            • 2012-01-20
            • 2016-05-28
            • 1970-01-01
            相关资源
            最近更新 更多