我有一个部署到Azure的ASP.NET网站。我正在使用VS2013,.NET 4.5.1和Azure SDK 2.2。我在管理门户中打开了VS2013的远程调试。我可以成功右键单击服务器中“Azure”节点下的网站,然后选择“附加调试器”。它说它正在下载调试设置,然后Web浏览器出现。但是断点永远不会被击中,尽管它们处于我知道执行的代码中。一条线索:断点有一个空心圆圈,并指出:“断点当前不会被命中。此文档没有加载任何符号。”但是在本地测试时,断点工作正常。有没有人对如何解决这个问题有任何想法?
...谢谢
-Ben
更新:我从.NET 4.5.1下降到4.5;问题仍然存在。
答案 0 :(得分:5)
我也很挣扎(VS2015 Enterprise),但找到了一个非常一致的解决方案。
这几乎每次都适合我。请注意,在Visual Studio中从w /停止和启动Web应用程序不能始终如一地工作。
答案 1 :(得分:4)
确保将调试版本发布到特定部署插槽。我有同样的问题,当我将远程调试器连接到我的部署调试版本的暂存插槽时,它工作正常。尝试调试发布版本不起作用,因为不存在必需的调试符号。就像@Lars上面解释的那样,我不得不重新启动Azure上的Web应用程序,然后再针对调试版本再次尝试调试。
答案 2 :(得分:3)
我写了一篇简短的文章,帮助我调试。 看看这里:Debugging in Azure Cloud
简而言之:找到附加到worker角色和Web角色的正确进程。 WebRole:WaIISHost.exe,w3wp.exe + conhost(s) WorkerRole:WaWorkerHost.exe + conhost(s)
答案 3 :(得分:1)
经过数小时的努力,我找到了一个一致的解决方案。我认为根本原因仅仅是一个令人困惑的UI。试试这个:
答案 4 :(得分:0)
我几次遇到这个问题。
通过确保发布配置文件的平台/配置与本地构建平台/配置相匹配来解决此问题。
我正在发布Debug |任何CPU,但我的本地版本使用Debug |混合平台。
将发布配置更改为Debug |混合平台并重新发布,我能够附加远程调试器并加载了符号。
通过在Visual Studio的“模块”窗口中查找名称空间/程序集名称,验证是否为尝试设置断点的程序集加载了符号。 (这是在将调试器附加到远程进程之后,并且您的VS处于“调试”模式。)
完成此操作后,断点开始从本地VS实例内部为远程进程工作。
答案 5 :(得分:-1)
.Net Core Azure Function项目遇到此问题。以下github问题可以说明问题,但是解决方案无法解决我的问题:
https://github.com/Azure/Azure-Functions/issues/872
我终于在这里偶然发现了答案:
它归结为在Azure中手动附加到流程,而不是依靠Cloud Explorer的右键单击功能。