2009-06-22 97 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