我正在尝试使用一些ASP.NET(vbhtml)组件和一些更常规的HTML5位来调试Web应用程序。它建于几年前,并广泛使用了Knockout。其中某些部分已损坏,我正在尝试对其进行调试。
该项目包括一个API(WebAPI 2)和其他一些东西。分离HTML5部分并使用VSCode对其进行调试并不是一件容易的事,所以我认为我只能使用Visual Studio。
两天前的几分钟,我能够设置断点,逐步执行Javascript代码并发现一个问题。我不确定我做对了什么。从那时起,我一直无法对Javascript组件进行任何调试。我曾尝试使用Visual Studio 2017和2019。
我在选择Chrome并启用脚本调试的情况下进行了调试。浏览器启动后,该断点的左端将显示一个黄色标志,该消息显示一条消息:该断点当前不会被点击。设置了断点但尚未绑定。
浏览器正常运行,但未命中断点。当“检查”窗口打开时,我看到一些东西在变,但是没有任何意义。
我在Visual Studio中设置了一个新的“浏览方式”条目。我选择了chrome.exe,并在“参数”字段中添加了--remote-debugging-port = 9222。保存并开始调试。打开浏览器后,出现弹出错误消息:无法连接到运行时进程,在10000毫秒后超时-(原因:无法连接到目标:连接ECONNREFUSED 127.0.0.1:51772)。
每次发生这种情况时,我都会得到一个不同的端口号。当我单击“确定”时,调试停止并且浏览器窗口关闭。我已完全确定在开始调试之前,Chrome已关闭,其运行程度足以杀死所有Chrome进程。
经过更多搜索后,我选择了Chrome调试配置,然后选择Debug | Start Without Debugging。 Chrome启动正常。然后,我选择“附加到进程”并选择进程。一切看起来不错,但是断点再次变为非活动状态,并显示“断点当前未命中”消息。
我尝试添加“调试器”;代码条目。 VS 2019抱怨它们,但它们没有效果。
如果我尝试使用IE11进行调试并获得了相似的结果。有时候我会说一个错误,尽管我以前杀死了Chrome,但已经连接了另一个调试器。
我很茫然。任何线索将不胜感激。
Rob
答案 0 :(得分:0)
问题肯定出在捆绑包配置中。在我的情况下,它是一个名为BundleConfig.vb的文件。它似乎将JavaScript和CSS文件捆绑在一起,以使站点加载更快,而不是将每个文件作为离散的HTTP请求加载。
我的文件开始如下:
Imports System.Web.Optimization
Public Module BundleConfig
' For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
Public Sub RegisterBundles(ByVal bundles As BundleCollection)
bundles.Add(New ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-3.4.1.min.js",
"~/Scripts/jquery-ui-1.12.1.js"))
并以此结束:
BundleTable.EnableOptimizations = False 'Commented out 190601 to debug scripts
'BundleTable.EnableOptimizations = True
End Sub
End Module
如果EnableOptimization为True,则将无法使用Visual Studio或Chrome或IE中的调试工具来调试任何JavaScript。注释掉它,便可以进行调试。