MVC项目中的Web API没有达到断点(“未加载符号”)

时间:2013-01-01 01:38:34

标签: asp.net asp.net-mvc debugging asp.net-web-api

我有一个ASP.NET MVC项目,将ASP.NET web api定义为此项目中的一个区域。所以结构如下:

MVC Web
   Controllers
   Views
   Areas
     API (web API)
       Controllers

该应用按预期工作。但是,我遇到调试问题。我可以在MVC控制器中放置一个调试器,它按预期工作。我不能在Web API控制器中放置断点,因为我得到“断点当前不会被命中。没有为此文档加载符号。”我已经有一段时间了,所以这可能是一个简单的修复,但我无法弄明白。当我可以调试MVC控制器时,有什么想法我为什么会遇到Web API控制器的问题?

8 个答案:

答案 0 :(得分:24)

在找到永久性解决方案之前,您可以使用方法System.Diagnostics.Debugger.Break()强制在该行上发生中断 - 就像断点一样:

public ActionResult IndexCheckInOut(string providerKey, DateTime? date = null)
{
    System.Diagnostics.Debugger.Break();   
    return View("Index");
}

以下是一些文章的链接,可能有助于您找到更持久的解决方案:

The breakpoint will not currently be hit

Stepping into ASP.NET MVC source code with Visual Studio debugger

答案 1 :(得分:4)

可能的解决方案:我忘记了我之前正在做一些远程调试,并设置了从UNC路径而不是Microsoft Symbol Servers加载的调试符号。

要解决此问题,请执行以下操作:工具 - >选项 - >调试 - >符号 - >确保' Microsoft Symbol Servers'检查。

我还发现这个问题来自创建新的解决方案配置,而不是基于任何现有配置,例如DEBUG配置。这导致Debug Info设置为none

要解决此问题:右键单击您的项目 - >属性 - >构建 - >确保设置了错误的解决方案配置 - >点击Advanced - >将Debug Info更改为full

答案 2 :(得分:3)

对我来说,它只是停止IIS并重新启动Visual Studio。在进一步调查之前绝对值得一试。

答案 3 :(得分:1)

打开:

工具-选项-调试-常规

选择:

  • 启用.NET Framework源代码步进

  • 启用源服务器支持(选择所有选项)

打开:

工具-选项-符号

选择 Microsoft Symbol Servers

点击加载所有符号

重建项目。

选择:

清洁

重建

重建解决方案,然后重试。

答案 4 :(得分:1)

我自己只是遇到了这个问题,并且一直在扯头发大约一个小时,直到我意识到Visual Studio神秘地切换为以“发布”模式运行该项目。切换回“调试”模式并进行重建使我失望。

这个问题可能是一个非常小众的答案,但是希望这对某人有帮助。

答案 5 :(得分:0)

这解决了我的问题:

  • 关闭\退出系统托盘中所有IIS Express实例(在Windows时钟旁边)。
  • 删除项目目录中的binobj文件夹
  • 重新启动Visual Studio
  • 再次运行

enter image description here

答案 6 :(得分:0)

我遇到了同样的问题,但是我的问题与添加配置转换有关。转到“活动解决方案配置”下的“构建”>“配置管理器”,确保已选择“调试”。

答案 7 :(得分:0)

我的问题如下

我在 IIS 中创建了一个虚拟目录,并在我的起始 URL 链接中使用该名称,例如 http://WebAPI/swagger/ui/index (我的符号没有加载以上所有步骤)

  1. 使用 IIS Express
  2. 从名为 WebAPI 的 IIS 管理器中删除了网站
  3. 我改回的起始 URL 是 http://localhost:59788/swagger/ui/index(Visual Studio 的默认端口)

现在我的所有符号都已加载。