无法在部署在完整 .NET Framework 上的 IIS 上调试 ASP.NET Core MVC

4
我已经卡了一个多小时来调试我的ASP.NET Core MVC应用程序。它使用完整的.Net Framework 4.6.1。
使用IIS Express进行调试非常顺利,但是当将该项目部署到IIS时,我会将Visual Studio Debugger附加到“w3wp”进程上,虽然它能够附加,但由于缺少符号,我仍然看到我的断点未启用。
我尝试了许多不同的调试器附加组合方式,更新了Visual Studio(我正在使用VS 2017),但都没有成功。
我在stackoverflow和MS docs上都查询过,但是关于针对完整.Net框架定位调试ASP.NET core的内容很少。
最糟糕的是,几周前我遇到了类似的问题,但没有记录它是如何解决的。
你有什么想法吗?
更新:出现问题的是Windows Server 2012 R2,但在Windows 10上调试可以正常工作。

当查看进程时,也有一个以我的项目命名的进程,但它也不会在断点处中断,还显示符号未加载,尽管我尝试通过“调试”->“选项”->“调试”->“符号”指定符号。 - Andre Platov
尝试在Windows 10上部署 - 没有问题。问题出现在Windows Server R2上。 - Andre Platov
将 .Net Framework 升级到 4.7 也没有帮助。 - Andre Platov
1个回答

7

好的,我想我理解发生了什么。

首先,根本原因:

  1. 一开始我没有调试正确的进程。它不是常规的w3wp,而是我的项目名称(例如"MyAspNetCoreApp")。
  2. 在修改Debug设置时,我禁用了“启用编辑并继续”设置,并启用了“使用托管兼容性模式”。这显然只会使事情变得更糟。

哎呀……

现在,有帮助解决问题的故障排除:

  • 我最终尝试在Windows Server上远程调试我的应用程序。使用这篇微软文章帮助我为我的Visual Studio(2017)设置远程调试。
  • 然后我成功地连接到了Windows Server上的进程(我的VS在Windows 10上)
  • 那表明问题很可能与VS有关,因为远程调试起作用了。
  • 此时,我去检查了Windows Server和Windows 10上的两个Visual Studios中的调试设置。
  • 这是我注意到的差异,我在Windows Server的VS上进行了更改,然后它就好了!

非常令人困惑的是,微软的文档始终使用w3wp和现在的dotnet进程作为要附加的进程。

别误解我,按程序集名称附加进程的能力很棒,我只希望它能清楚地反映在文档中。希望这些人很快会跟上:)


由于此问题已解决,如果可能的话,您可以将您的解决方案标记为答案,这样可以帮助其他遇到相同问题的社区成员。祝您有美好的一天 :) - Jack Zhai
谢谢你提醒我。由于某些原因,我必须等待两天才能做到这一点。 - Andre Platov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接