asp.net開發之“未將對象引用到實例”

相信幾乎所有學過ASP.NET的朋友都遇到過這個問題:未將對象引用設置到對象的實例。下面,就來看一下到底都有哪些原因會造成這個問題的出現和解決方法

一、數據庫方面 

1、ViewState 對象爲Null。

2、DateSet 空。

3、sql語句或Datebase的原因導致DataReader空。

4、聲明字符串變量時未賦空值就應用變量。

5、未用new初始化對象。

6、Session對象爲空。

7、對控件賦文本值時,值不存在。

8、使用Request.QueryString()時,所獲取的對象不存在,或在值爲空時未賦初始值。

9、使用FindControl時,控件不存在卻沒有做預處理。

10、重複定義造成未將對象引用設置到對象的實例錯誤.

 

二、應用程序方面

 

     (1)所設置的變量爲空值或沒有取到值,一般出現在傳遞參數的時候出現這個問題,也會在使用DataGrid或gridview或datalist等數據控件時出現.

  (2)控件名稱與codebehind裏面的沒有對應 

  (3)未用new初始化對象 

  (4)在程序中所引用的控件不存在 

  解決方法: 

  (1)使用try..catch...finally捕捉錯誤,或直接用response.write()輸出所取的變量值

  (2)查看代碼中是否存在未初始化的變量 

三、數據庫連接

 

SqlConnection.Open   未將對象引用設置到對象的實例 

在使用VS2015開發 ASP.NET程序時候 有時候操作 SqlConnection對象的Open()方法時候會出現

未將對象引用設置到對象的實例。 

說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以瞭解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。

異常詳細信息:System.NullReferenceException: 未將對象引用設置到對象的實例。

源錯誤:

。。。。 

conn.Open(); 

...... 

跟蹤調試也肯定可以確定 對conn進行new 操作 但是程序經常在這個地方報錯,但是有時候重啓服務器或者重啓IIS有能正常使用了。 怎麼調試也找不到問題  那麼這個時候可能是你本機上安裝的.NET FRAMEEWORK 框架有問題,可能沒有沒有安裝SP1.1補丁 

需要打NETFRAMEEWORK1.1 SP1的補丁,到微軟官方網站下載安裝後就好了。 

四、一般出現NullReferenceException異常的情況:

1、對象所在的命名空間沒有引用

2、對象沒有實例化

3、出現異常,實例化失敗對象爲 null

 

五、IIS 扛不住的時候,也會出現上面的錯誤。

當應用程序的用戶訪問量超過它能承受的範圍之後,就會出錯。

改善你的程序,使用緩存,儘量減少與數據庫交互的次數。

 

六、查看是否重置了DataSet引用

請大家好好查查自己的代碼,是不是在其他地方重新引用了,在DataSet被設置成全局對象也會出現這種錯誤提示。

 

七、最後

甚至,僅僅因爲網站裏面DAL的dll文件失效,業務層實例化不了IDAL裏面的對象也會出錯。

當你發現所有的方法不行時,打上.netframework的補丁

總結

        暫時就這麼多了吧,雖然錯誤的表現形式大致相同,但是其原因卻是五花八門,學習就要像中醫一樣,治標更要治本,學習要知其然還要知其所以然。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章