2009-06-22 86 views
2

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

当我浏览网站上的浏览器的任何网页,我得到了一个服务器错误回:

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

看起来像时间恢复所有的变化,然后再次开始,慢慢地。 – 2009-06-22 20:23:52

回答

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”。如果你使用VS,那么去CTRL-ALT-E(或调试/例外菜单),然后检查公共语言运行时例外的Thrown选项,这样当抛出CLR异常时VS会中断,然后你可以看到它发生的确切位置。在调试器中启动应用程序,并找出发生了什么。 5)如果异常抛出代码之外,请检查堆栈跟踪以找出它来自哪里。如果你必须深入得多,并且你知道它发生在.NET中,但是你不知道为什么,请启用.NET Framework源代码步进(如果你使用VS2008 SP1,则在Options/Debug某处) )。如果您使用的是早期版本,则必须查看如何启用.NET Framework符号等......您不应该这样做,只需将其添加为“下一步”即可。

+0

感谢您的指点!事实证明,这是一个配置问题的组合,它引入了过时的组件,这正在破坏网站正在进行的一些代码生成。团队中的其他人让我有机会,所幸或不幸的是,我没有太多机会练习您所描述的调试技巧。下次吧。 – Bruce 2009-06-23 04:53:40