Asp.net MVC项目中的Web API是';t命中断点(“未加载符号”)
我有一个ASP.NETMVC项目,其中ASP.NETWebAPI被定义为该项目中的一个区域。因此,结构如下所示:Asp.net MVC项目中的Web API是';t命中断点(“未加载符号”),asp.net,asp.net-mvc,debugging,asp.net-web-api,Asp.net,Asp.net Mvc,Debugging,Asp.net Web Api,我有一个ASP.NETMVC项目,其中ASP.NETWebAPI被定义为该项目中的一个区域。因此,结构如下所示: MVC Web Controllers Views Areas API (web API) Controllers 该应用程序按预期工作。但是,我在调试方面遇到了一个问题。我可以在MVC控制器中放置一个调试器,它可以按预期工作。我无法在web API控制器中设置断点,因为我得到“断点当前不会被命中。此文档没有加载任何符号。”我已经为此痛苦了
MVC Web
Controllers
Views
Areas
API (web API)
Controllers
该应用程序按预期工作。但是,我在调试方面遇到了一个问题。我可以在MVC控制器中放置一个调试器,它可以按预期工作。我无法在web API控制器中设置断点,因为我得到“断点当前不会被命中。此文档没有加载任何符号。”我已经为此痛苦了一段时间,因此这可能是一个简单的修复方法,但我无法理解。当我可以调试一个MVC控制器时,你知道为什么我会在web API控制器上遇到这个问题吗?在找到永久解决方案之前,你可以使用方法
System.Diagnostics.Debugger.Break()
强制在该行上发生中断-就像断点一样:
public ActionResult IndexCheckInOut(string providerKey, DateTime? date = null)
{
System.Diagnostics.Debugger.Break();
return View("Index");
}
以下是一些文章的链接,可能会帮助您找到更持久的解决方案:
可能的解决方案:我忘记了我以前在做一些远程调试,并将调试符号设置为从UNC路径而不是Microsoft符号服务器加载 要将此标题改为:工具->选项->调试->符号->确保选中“Microsoft符号服务器” 我还通过创建新的解决方案配置而不是基于任何现有配置(如调试配置)发现了这个问题。这导致
Debug Info
设置为none
要解决此问题:右键单击项目->属性->构建->确保设置了错误的解决方案配置->单击
高级
->将调试信息
更改为完整
对我来说,只需停止IIS并重新启动Visual Studio即可。在进一步调查之前,绝对值得一试。这解决了我的问题:
- 关闭\退出系统托盘(Windows时钟旁边)中的所有IIS Express实例
- 删除项目目录中的
和bin
文件夹obj
- 重新启动Visual Studio
- 再运行一次
- 启用.NET Framework源代码单步执行
- 启用源服务器支持(选择所有选项)
重新生成解决方案,然后重试。我自己也遇到了这个问题,在一个小时左右的时间里,我一直在胡思乱想,直到我意识到Visual Studio神秘地切换到以“发布”模式运行该项目。切换回“调试”模式并重建使我得到了解决
可能是这个问题的一个非常合适的答案,但希望这对某人有所帮助。我也有同样的问题,但我的问题与添加配置转换有关。转到“活动解决方案配置”下的“生成”>“配置管理器”,确保已选择“调试”。我的问题如下 我在IIS中创建了一个虚拟目录,并在我的开始URL链接中使用该名称,如 http://WebAPI/swagger/ui/index (未加载上述所有步骤的我的符号)
现在,我的所有符号都已加载。当我尝试使用的程序集未按预期编译时,我经常会发现这一点。确保您正在编译所有classlib并执行“全部重建”。HTH(顺便说一句,我可以毫无问题地调试我的webapi控制器,因此我认为这根本不是问题)如果您使用IIS Express,请尝试关闭它,并在“重建”解决方案后让VS启动它。对我来说,当webapi项目未设置为解决方案的启动项目时,我遇到了这个问题。让我的项目成为启动项目解决了这个问题。最后一个环节就是解决方案。对我来说,解决办法是禁用“仅启用我的代码”。@BrianMains很高兴听到这有帮助!最后一个链接对我来说也很有效,但我也必须清理和重建我的项目。