0

PageLoad のセッションに保存され、ユーザーが検索ボタンをクリックしたときに使用される Catcha 値 (セキュリティ コード) があります。ユーザーが 20 分以上 IDLE の場合、セッションの値は期限切れになります。そして、ユーザーが検索ボタンをクリックしたとき。「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーがスローされます。

PageLoad 時:

 if (!IsPostBack)
        {
            Session["CaptchaImageText"] = new RandomGen().GenerateRandomCode();

        }

SearchButtonClick イベント:

if (SecurityCodeTextBox.Text.Trim() == Session["Captcha"].ToString())
        {
            return true;
        }
        else
        {
            return false;
        }

ここで、 「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。Session["Captcha"]!= null も確認しました。しかし、それでも同じエラーが表示されます。

「Session Timeout !Visit again」というメッセージをリダイレクトまたは表示してブラウザを閉じる方法。

前もって感謝します!

4

2 に答える 2

1

あなたのコードは、セッション変数の命名に一貫性がないように見えます (私はこれらの定数の強力な支持者です)。

そうは言っても、あなたの状況を処理する最も簡単な方法は

private void Page_Load(object sender, System.EventArgs e)
{     
    Response.AddHeader("Refresh",Convert.ToString((Session.Timeout * 60) + 5)); 
    if( string.IsNullOrEmpty(Session["Captcha"] as string) ) 
    {
         Server.Transfer("RedirectPage.aspx");
    }
}

これにより、セッションの有効期限が切れるとページがリダイレクトされます。

于 2012-07-10T13:51:44.830 に答える
0

ブラウザを閉じるには、クライアント側のスクリプトが必要です...サーバー側でそれを行う方法はないため、window.close();. メッセージ エラーについては、Session[] が null でないかどうかを確認します。このメソッドを呼び出して null の場合、この種の例外が発生します。次のようなことを試してください:

if (Session["Captcha"] == null)
{
   Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Session Timeout! Visit again.'); window.close();", true);
   return false;
}

return (SecurityCodeTextBox.Text.Trim() == Session["Captcha"].ToString());
于 2012-07-10T13:49:17.807 に答える