Asp.net core mvc 调试未命中.NET核心MVC 6应用程序中的断点

Asp.net core mvc 调试未命中.NET核心MVC 6应用程序中的断点,asp.net-core-mvc,visual-studio-debugging,Asp.net Core Mvc,Visual Studio Debugging,我正在开发.NETCore1.0MVC6应用程序,我坚持调试,因为它昨天停止运行。使用“尝试删除项目并重新启动”的次数。第一次加载符号时,我在工具->调试->符号中取消了选中,但是它遇到了断点。现在,如果我选择“只启用我的代码”而不是在控制器中,它只会碰到C类“Startup.cs”。我从下拉列表中选择了调试选项,但不确定原因。这里需要帮助 我变为 选择调试->选项->调试->常规 勾选启用.NET Framework源代码步进。 但仍然没有成功 单元 尝试在索引中为MVC核心插入控制器主类 调

我正在开发.NETCore1.0MVC6应用程序,我坚持调试,因为它昨天停止运行。使用“尝试删除项目并重新启动”的次数。第一次加载符号时,我在工具->调试->符号中取消了选中,但是它遇到了断点。现在,如果我选择“只启用我的代码”而不是在控制器中,它只会碰到C类“Startup.cs”。我从下拉列表中选择了调试选项,但不确定原因。这里需要帮助

我变为

选择调试->选项->调试->常规 勾选启用.NET Framework源代码步进。 但仍然没有成功

单元 尝试在索引中为MVC核心插入控制器主类 调试输出
实际上,您的屏幕截图不是调试输出,而是构建输出

如果禁用“仅启用我的代码”,并在“工具”->“选项”->“调试”->“符号”下启用/禁用Microsoft符号服务器,然后在重新打开应用程序后对其进行调试,结果如何

如果我创建一个新的应用程序,断点被正常命中,如果我重新打开解决方案,实际上它仍然可以命中断点,但速度非常慢。与屏幕截图1类似,如果访问调试输出窗口,它会逐个列出加载的符号,大约1分钟后,它会像屏幕截图2一样命中断点。当然,我在工具->选项->调试->符号下启用了Microsoft符号,并在上述步骤中禁用了“仅启用我的代码”

对于您的问题,一个可能的原因是它只是缓慢加载符号,请稍等片刻


虽然Jack Zhai MSFT的解决方案有效,但我仍然有一些奇怪的行为:断点部分有效。在这里找到了完美的解决方案:
在我的例子中,上面的链接加载了大量的解决方案,在Build菜单下将配置从Release更改为Debug,configuration Manager解决了我所有与断点相关的问题。

我遇到了同样的问题,上面的解决方案都不起作用。 最后我发现下面的场景很有魅力


转到工具->选项->调试->常规->取消选中使用托管兼容模式复选框

通过启用以下调试选项启用.Net framework源代码步进

我认为我遇到了相同的行为,但在我的情况下,它是由.Net Core MVC的Startup.cs类中的时间耦合引起的应用程序

我在app.UseMvc调用下面包含了我的app.usemidleware调用,因此我的中间件组件将初始化,但从未被进入我的应用程序的请求击中。将我的调用移动到app.usemvirtual调用上方的app.usemvirtual调用修复了此问题,现在我的请求通过我的自定义中间件正确路由


app.UseMVC必须是最后一个app.UseMVC。在Startup.cs类的Configure方法中使用call

是否从输出窗口获取任何输出消息?还请检查“调试模块”窗口。为了确保它与您的VS设置无关,我建议您在调试应用程序之前重置VS设置。例如,项目属性优化代码或其他将影响调试。它抱怨符号未加载编辑工作正常,直到最近只有在我创建新项目时才工作,并且它在控制器类中遇到断点,但一旦应用程序关闭并重新打开,它就不会到达调试点,虽然startup.cs仍然达到调试点,但我相信它在抱怨没有加载符号来进行测试,我已经创建了MVC 5应用程序,在调试过程中,调试红色标记变为黄色,给我符号未加载错误消息。我确实重置了visual studio,但仍然存在相同的问题我猜断点设计为在调试模式下工作,在发布模式下,它们会被跳过以加快进程,但我只是猜测。断点和调试模式通过生成特定的程序集指令来工作,这些指令使您的应用程序能够使用断点暂停,当您在发布中构建时,不会生成这些程序集指令,因此,调试器没有什么可以中断的,所以这就是为什么您可以在发行版中设置断点,但仍然不能让您的应用程序实际中断。@TrevorHart-谢谢,很高兴知道它在幕后是如何工作的。谢谢!这有记录吗?据我所知没有。这里有点暗示,嗨,杰克,在我的场景中,调试并不是只对LoginController的一个控制器起作用,而是对所有其他控制器起作用。并且输出仅在调试模式下运行。你知道吗?为什么只有一个控制器不接受调试。注意:无论我在什么地方更改登录控制器中的任何代码,都不会影响登录控制器,但我已经验证了我是否在正确的路径或文件中更改了代码。
 public class HomeController : Controller
{
    public IActionResult Index()
    {
        var x = 2 + 3;

        return View();
    }

    public IActionResult About()
    {
        var x3 = 2 + 6;
        var xx = "dd";

        ViewData["Message"] = "Your application description page.";

        return View();
    }