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

时间:2009-06-22 20:22:53

标签: 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 个答案:

答案 0 :(得分:5)

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(或Debug / Exceptions菜单),并检查Common Language Runtime Exceptions的Thrown选项,这样每当抛出CLR异常时VS都会中断,然后你可以准确地看到它发生的位置。在调试器中启动应用程序,找出发生了什么。

5)如果异常被抛出代码之外,请检查堆栈跟踪以找出它的来源。

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