asp.net - 如何调试 ASP.NET 编译错误?

标签 asp.net asp.net-mvc debugging

我有一个大型、复杂的网站,大部分是由其他人编写的。我做了一些更改,现在当我尝试访问网站上的任何页面(不仅仅是我的更改所在的页面)时,我收到下面描述的错误。虽然我想知道如何解决这个问题,但我更想知道下一步应该采取的一般诊断步骤,以便找出问题 - 我希望下次能够自己解决它。预先感谢您的帮助!

当我将浏览器导航到网站上的任何页面时,我收到服务器错误:

Parser Error
Parser Error Message: Object reference not set to an instance of an object.
Source Error: [No relevant source lines]

我检查了服务器上的事件日志,并得到了一些稍微更详细的信息:

Event code: 3006 
Event message: A parser error has occurred. 

Exception information: 
Exception type: HttpException 
Exception message: Object reference not set to an instance of an object. 

Stack trace:
at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters)

最佳答案

1) 源错误未显示任何行或行号,因此请确保您正在进行调试构建。另外,请确保您的 web.config 文件中有以下内容。

2) 检查您的 global.asax 文件...那里可能有问题。您有一个空引用异常,并且它可能发生在您在 global.asax.cs 中更改的任何代码中。

编辑:要调试 global.asax.cs 文件,通常最简单的方法是在 Session_Start 事件处理程序中放置 System.Diagnostics.Debugger.Launch() 调用。如果没有处理程序,请添加处理程序。

3) 检查并确保 ASP.NET 安装正确。 IIS 中虚拟目录的属性中有一个名为 ASP.NET 的选项卡。检查版本。如果未正确安装,请运行“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i”。

4) 如果您使用 VS,则转到 CTRL-ALT-E(或“调试/异常”菜单),并选中公共(public)语言运行时异常的“抛出”选项,这样每当抛出 CLR 异常时 VS 就会中断,然后您可以准确地看到它发生的位置。在调试器中启动应用程序并了解发生了什么。

5) 如果异常是在代码之外引发的,请检查堆栈跟踪以找出异常的来源。

6) 如果您必须更深入,并且您知道它发生在 .NET 中,但您不知道为什么,请启用 .NET Framework 源代码单步执行(如果您使用的是 VS2008 SP1,它位于选项/调试中的某个位置) 。如果您使用的是早期版本,则必须查找如何启用 .NET Framework 符号等...但您不必这样做,只需将其添加为“下一步”即可。

关于asp.net - 如何调试 ASP.NET 编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1029215/

相关文章:

asp.net-mvc - 如何将枚举传递给Html.RadioButtonFor以获取MVC 2 RC 2,C#中的单选按钮列表

c# - 使用 asp.net MVC 拖放上传到 aws s3

c# - 在 Visual Studio 解决方案中的某个项目上启用和禁用 "Step into"调试

c++ - GDB 调试器在 Code::blocks 中不起作用

ASP.NET session 超时测试

c# - 如何从 C# 列表中检索常用项

asp.net - 部署阶段/生产应用程序设置 Asp.net Core

asp.net - 在同一个 asp.net Web 应用程序中使用两个 Owin 身份

ASP.NET MVC 认为我的虚拟目录是一个 Controller

xcode - GDB:创建局部变量?