Web API返回结果,但即使正确加载符号也不会触发断点

时间:2017-03-18 01:53:06

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

这是我遇到过的最奇怪的事情所以请听我说。

  1. 符号正在正确加载。所以那不是问题。
  2. API正在运行且数据有效。
  3. 我在同一个项目中有2个控制器。当我发出GET请求时,会触发一个控制器的断点。但是第二个控制器的断点并没有被击中。但它确实正确地返回结果。
  4. 我在构造函数级别设置断点(并尝试过其他地方),但不确定出现了什么问题。

    代码非常正常C#MVC web api。

    有谁知道可能导致此行为的原因?

5 个答案:

答案 0 :(得分:1)

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

然后附加调试器,看看它是否捕获Exception。您可能会附加错误的流程。

接下来将代码修改为throwcatch Exception并将其记录下来。这里的诀窍是VS Debugger有一个选项,即使在捕获的“用户处理的”例外情况下也会停止:请参阅配置here for VS up to 2013here for VS 2015+。然后你可以看到符号是否与代码匹配。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

控制器是否正常工作但是没有触及断点,输出缓存是否生成了什么?如果是,则数据将通过任何缓存来返回,并且控制器不会被实例化。

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

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

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

答案 3 :(得分:0)

改为尝试

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

2.Search Debug

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

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

答案 4 :(得分:-1)

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