[.NET]NullReferenceException

當NullReferenceException及ThreadAbortException發生時,
無法有效找到問題點時,還有那裡的資訊可以找呢?

最近幫同事查一個 資料交換WebService 的問題,同事給的Log如下,

執行資料寫入時發生例外錯誤:System.NullReferenceException: 並未將物件參考設定為物件的執行個體。
於 log4net.Appender.FileAppender.ActivateOptions()
於 log4net.Appender.RollingFileAppender.ActivateOptions()

 

程式碼如下,
LogWriter.Write(strInfos.ToString());

 

執行資料寫入時發生例外錯誤:System.Threading.ThreadAbortException: 執行緒已經中止。
於 log4net.Repository.Hierarchy.Logger.Log(Type callerStackBoundaryDeclaringType, Level level, Object message, Exception exception)
於 log4net.Core.LogImpl.Info(Object message)

 

程式碼如下,
strInfos += ds.Tables[i].Rows[k][l].ToString();

 

筆者一直著眼於 NullReferenceException ,但又找不出問題點。

後來請同事拿 Event Log 來看,如下,

image

 

才發現原來是 要求已逾時 Request timed out ,

所以設定 web.confg ,將 httpRuntime 裡的 executionTimeout 調大,才解決。

如果 compilation 中的 debug 是設定成 false ,則 executionTimeout 預設是 110 秒(.net 1.0, 1.1 是90秒)。

詳細請參考「httpRuntime Element (ASP.NET Settings Schema)」。

所以除了AP寫出來的Log之中,也可以看一下 Event Log 哦!

PS.

這個問題點,如果 呼叫端 有告知問題點,應該可以馬上找出問題點。

但重點是 呼叫端 不沒有 pass 這樣的訊息過來 ... 

參考資料

httpRuntime Element (ASP.NET Settings Schema)

How to troubleshoot HttpException Request timed out

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^