无法在web api控制器中遇到断点

当我尝试调试此代码时:

// POST: api/Events [HttpPost] public async Task PostEvent([FromBody] object savedEvent) { Event addedEvent = JsonConvert.DeserializeObject(savedEvent.ToString()); if (!ModelState.IsValid) { return BadRequest(ModelState); } 

无法达到这条线:

  Event addedEvent = JsonConvert.DeserializeObject(savedEvent.ToString()); 

Debuger反应就像我点击继续但代码过去没有执行。 我真的很困惑。 谢谢你的帮助。

尝试删除操作的异步部分。 这不是一个永久的解决方案,但它可以帮助您调试。 我建议的另一件事是在你的行动中尝试捕捉代码。 您的反序列化可能会失败并抛出一个exception,无论出于何种原因,调试器都没有捕获。

 // POST: api/Events [HttpPost] public ActionResult PostEvent([FromBody] object savedEvent) { Event addedEvent = JsonConvert.DeserializeObject(savedEvent.ToString()); if (!ModelState.IsValid) { return BadRequest(ModelState); } 

你可以尝试几件事

1)确保您在调试模式下运行(不在发布中)

像这样

2)确保您正在运行加载了所有符号的最新代码(将鼠标hover在断点上可以为您提供有关其禁用的原因的额外信息)

您可能正在“发布”模式而不是“调试”中运行应用程序。

您无法在“发布模式”中设置断点(大多数情况下)。

符号(.pdb)文件中有什么内容? 符号文件的确切内容因语言而异,并且基于您的编译器设置,但在非常高的级别,它们是编译器如何将源代码转换为处理器执行的机器代码的记录。

资料来源: https : //blogs.msdn.microsoft.com/devops/2015/01/05/understanding-symbol-files-and-visual-studios-symbol-settings/

我发现有时清洁和重建有助于破解断点。 如果这没有帮助,重启Visual Studio也会有所帮助(特别是在2015年,至少在我的经验中)。

除此之外,我还遇到了内存泄漏的问题,导致我的应用只是输入到我的代码的某些部分,尽管这通常伴随着应用程序崩溃。

您没有提到任何错误或崩溃,只是代码没有执行,所以我不确定内存泄漏是否会导致您的问题。

尝试怎么样:

 System.Diagnostics.Debugger.Launch(); 

启动并将调试器附加到该进程。 至少要确保你进入那里。