Blazor WebAssembly浏览器调试无法设置断点、源文件不显示问题求助
Blazor WebAssembly 浏览器端调试无源码、缺失file://目录排查方案
这个是Blazor WASM浏览器调试的高频问题,解决完websocket断开报错后仍看不到file://源码目录的,按以下顺序排查:
- 先确认基础启动配置正确
- 必须用
Debug配置编译启动,绝对不能用Release模式,启动前先手动删除项目下的bin、obj文件夹,避免旧编译文件、错误PDB符号文件残留 - 检查launchSettings.json中当前使用的启动配置,确认
inspectUri字段存在且未被修改,字段值保留默认的{inspectUri}占位符即可,缺失的话直接新建默认Blazor WASM项目复制对应字段过来 - 访问调试地址时不要走任何反向代理、端口转发工具,必须直接访问localhost对应sslPort的原始地址,浏览器用Chrome/Edge最新稳定版,不要用套壳浏览器,不要开无痕/隐私模式
- 必须用
- 校准调试操作步骤
第一次按Shift+Alt+D弹出调试提示前,必须等Blazor应用完全加载:等初始加载圈消失、页面所有交互可正常响应后再等3秒再按快捷键。弹出的启动调试浏览器的指令要完整复制,不要漏了--remote-debugging-port=9222这类启动参数,用该指令启动的独立浏览器实例,先确认打开的是本地Blazor应用地址,再按一次Shift+Alt+D进入调试界面 - 针对file://目录不显示的专项排查
- 进入调试界面Sources面板后先等10秒以上,Blazor调试代理需要时间推送本地源码映射,网络或编译速度慢的时候不会立刻显示file://节点
- 等待后仍不显示的,检查项目.csproj文件的Debug配置段:确认
<DebugType>portable</DebugType>配置存在,除了<BlazorCacheBootResources>false</BlazorCacheBootResources>外不要加其他自定义缓存相关配置,Debug模式下不要开启AOT编译,AOT会直接导致源码映射失效 - 清理浏览器站点数据:在Blazor应用页面打开F12,切到Application面板,选择Clear storage下的Clear site data清理所有缓存,之后关掉所有浏览器进程,重新启动项目再走调试流程
- .NET 7+版本用户检查是否开启了Webcil格式,Webcil默认配置会干扰调试代理的源码映射,可临时在Debug配置下添加
<WasmEnableWebcil>false</WasmEnableWebcil>,重新编译后再尝试调试
之前的websocket disconnected报错基本都是调试端口被占用、调试代理未正常加载导致的,解决后仍看不到源码的情况,90%都是编译配置错误、浏览器缓存残留导致源码映射加载失败,按上面步骤逐次排查基本都能解决。
内容的提问来源于stack exchange,提问作者Beaugrand Charly
相关产品推荐
相关产品推荐

