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

Bru*_*uce 2 asp.net debugging asp.net-mvc

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

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

Parser Error
Parser Error Message: Object reference not set to an instance of an object.
Source Error: [No relevant source lines]
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

Ric*_*ein 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菜单),并检查公共语言运行时异常的Thrown选项,这样每当抛出CLR异常时VS都会中断,那么你可以看到确切的它在哪里发生.在调试器中启动应用程序并找出发生了什么.

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

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