2011-12-05 9 views
1

プログラムをデバッグするときにこのエラーメッセージが表示されます。ASP.NETセッションbool変数がページロードでヌルに設定されています

オブジェクト参照がオブジェクトのインスタンスに設定されていません。

エラーは、この行に起こること:このエラーは、Visual Studio 2008、.NET Framework 3.5の中で起こった

protected void btnDo_Click(object sender, EventArgs e) 
{ 
//do something 
Session["IsConnectionInfoSet"] = true; 
//do something 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
bool x = (bool)Session["IsConnectionInfoSet"];--> error here 
if (IsPostBack && x) 
//do something with the bool x variable 
} 

ポストバックがで呼び出されます。

誰かが私にこのようにアドバイスできますか?

答えて

1

Page_Loadメソッドは、常にイベントハンドラの前に実行されます。その結果、page_loadが実行され、nullを見つけてエラーをスローします。ハンドラをクリックする前に、このセッション値を設定する機会があります。

ここ

bool x = Session["IsConnectionInfoSet"] == null ? false : 
      (bool)Session["IsConnectionInfoSet"]; 
0
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     //this is the first time page load. 
    } 
    else 
    { 
     if (Session["IsConnectionInfoSet"] != null) 
     { 
      bool x = (bool)Session["IsConnectionInfoSet"]; 

      if (x) 
      { 
       //do something with the bool x variable 
      } 
     } 
    } 
} 

このセッションの値にアクセスするための安全な方法だが、これは

を役に立てば幸い