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


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

2007-04-25 16:553731人閱讀評論(2)收藏舉報

使用Session的方法應該說很簡單,在一個頁面賦值,另一個頁面調用就可以了。

自己在編制程序時犯了一個大錯誤,即語句的順序搞倒了,如:

Session["UserName"] = nameBox.Text;
    Response.Redirect("shuru.aspx");

先賦值再轉頁,而我剛開始是反過來寫了,那 么Session["UserName"] 的值始終為空了。

查了好多資料,終於把問題給解決了~~~吼吼...拿來跟大家分享^_^

一個重要的知識點:

System.NullReferenceException: 未將對象引用設置到對象的實例問題可能原因如下:
1ViewState 對象為Null
2DateSet 空。
3sql語句或Datebase的原因導致DataReader空。
4、聲明字符串變量時未賦空值就應用變量。
5、未用new初始化對象。
6Session對象為空
7、對控件賦文本值時,值不存在。
8、使用Request.QueryString(),所獲取的對象不存在,或在值為空時未賦初始值。
9、使用FindControl,控件不存在卻沒有做預處理。
10、重復定義造成未將對象引用設置到對象的實例錯誤

我的錯誤是第六種,Session對象為空.

錯誤原因:在調用 Session["userid"].ToString()   前應先檢查   Session["userid"]    對象是否為   null  

在未登錄的情況下, Session["userid"]  的值是null,直接用ToString()方法肯定會出錯的...

我原來的代碼:

protected void Page_Load(object sender, EventArgs e)
     {
             strIP = Request.UserHostAddress.ToString();
             strUserID = Session["userid"].ToString();
             strMessage = this.tbMessage.Text;
             strPostID = Request["postid"].ToString();
             strReplyTime = DateTime.Now.ToString();   
     }

改正后的代碼:

protected void Page_Load(object sender, EventArgs e)
     {
        if (Session["userid"] != null && Session["postid"] != null)
        {
             strIP = Request.UserHostAddress.ToString();
             strUserID = Session["userid"].ToString();
             strMessage = this.tbMessage.Text;
             strPostID = Request["postid"].ToString();
             strReplyTime = DateTime.Now.ToString();
         }
     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM