运行Asp.net应用出现Parser Error错误,报错行不存在于对应文件中
错误原因及排查修复方案
核心产生原因
Web Forms运行时加载的是编译后的代码副本,报错行号对应旧版本的编译结果,和当前编辑的源文件不匹配,常见诱因如下:
- 增量编译失效,修改后的代码未触发重新编译,IIS Express仍在运行历史版本的程序集
- ASP.NET临时编译缓存残留旧版本页面编译结果,Web Forms的动态编译内容默认存储在
C:\Windows\Microsoft.NET\Framework[64]\v4.0.30319\Temporary ASP.NET Files目录下,旧缓存未清理就会优先加载旧代码 - 报错指向的文件和当前打开的文件不是同一份,可能是解决方案内存在重名文件,或者报错指向的是输出目录、发布目录下的历史副本
- 页面关联了母版页、用户控件,报错行实际出自这些嵌入组件,动态拼接后行号计算出现偏移
具体排查修复步骤
- 清理并重新生成解决方案:在Visual Studio顶部菜单栏选择
生成→清理解决方案,完成后再执行生成→重新生成解决方案,确认编译无错误后再次运行项目 - 清空ASP.NET临时缓存:关闭所有IIS Express实例和Visual Studio,进入上述的临时ASP.NET文件目录,删除和当前项目对应的所有缓存文件夹,也可直接清空整个目录的内容(仅为编译缓存,不会影响系统和其他项目运行)
- 核对文件路径:复制报错信息中标注的文件完整路径,和当前编辑文件的路径做比对,确认二者完全一致
- 检查关联组件:如果当前页面使用了母版页、自定义用户控件,逐一检查这些组件的代码逻辑,排查是否存在对应报错逻辑
- 重置运行环境:重启IIS Express,必要时重启Visual Studio后再启动项目测试
内容的提问来源于stack exchange,提问作者Lolita
相关产品推荐
相关产品推荐

