Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net MVC项目中的Web API是';t命中断点(“未加载符号”)_Asp.net_Asp.net Mvc_Debugging_Asp.net Web Api - Fatal编程技术网

Asp.net MVC项目中的Web API是';t命中断点(“未加载符号”)

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控制器中设置断点,因为我得到“断点当前不会被命中。此文档没有加载任何符号。”我已经为此痛苦了

我有一个ASP.NETMVC项目,其中ASP.NETWebAPI被定义为该项目中的一个区域。因此,结构如下所示:

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源代码单步执行

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

开放式:

工具-选项-符号

选择Microsoft符号服务器

单击加载所有符号

重建项目

选择:

干净的

重建


重新生成解决方案,然后重试。

我自己也遇到了这个问题,在一个小时左右的时间里,我一直在胡思乱想,直到我意识到Visual Studio神秘地切换到以“发布”模式运行该项目。切换回“调试”模式并重建使我得到了解决


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

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

我的问题如下

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

  • 使用IIS Express
  • 已从名为WebAPI的IIS管理器中删除网站
  • 我改回的起始URL是http://localhost:59788/swagger/ui/index (visual studio中的默认端口)

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

    当我尝试使用的程序集未按预期编译时,我经常会发现这一点。确保您正在编译所有classlib并执行“全部重建”。HTH(顺便说一句,我可以毫无问题地调试我的webapi控制器,因此我认为这根本不是问题)如果您使用IIS Express,请尝试关闭它,并在“重建”解决方案后让VS启动它。对我来说,当webapi项目未设置为解决方案的启动项目时,我遇到了这个问题。让我的项目成为启动项目解决了这个问题。最后一个环节就是解决方案。对我来说,解决办法是禁用“仅启用我的代码”。@BrianMains很高兴听到这有帮助!最后一个链接对我来说也很有效,但我也必须清理和重建我的项目。