• 締切済み

Sessionの保持

いつもお世話になっています。 ASP.NET を勉強しているのですが参考資料が手元になく WEBでいろいろ検索をかけていたのですが該当した記事が見つからず ここで質問させていただきます。 かなり、初歩的な質問だと思うのですが、Sessionの値の保持の仕方がいまいちつかめません。 例えば、 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ページを初期化するユーザー コードをここに挿入します。 If Not IsPostBack Then Session("test") = 0 End If Response.Write(Session("test")) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Session("test") = Session("test") + 1 End Sub 上記のようにプログラムを組んだとして、ページを表示後に Button1 をクリックしても Session("test") の値が計算されていない場合があります。 つまり、Nothing の状態になっているのです。 かと思えば、次に Button1 をクリックしたら計算されていたり、 はたまた、もう1度 Button1 をクリックしたら Nothing になっていたりします。 ちなみに規則性はありません。 タイムアウトかとも思ったのですが、 デフォルトの20ままで動かしていますし、ページ表示後から Button1 のクリックまで2、3秒でも 不規則な動きをします。 何かIISの設定なのかなぁ?とも思っているのですが、皆目検討がつかずご教授いただけたらと思っています。 よろしくお願いいたします。

みんなの回答

  • enzo_taku
  • ベストアンサー率47% (9/19)
回答No.1

まず、必ず「Option Strict ステートメント」をONにしましょう。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vblr7/html/vastmOptionStrict.asp 次に、イベント(メソッド)の発生順序を頭に入れておくと良いかもしれませんね。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconcontrolexecutionlifecycle.asp Page_Load の次に Button1_Click イベントが発生するので、Page_Load で「Response.Write(Session("test"))」としても 「Button1_Click」を処理する前にSessionの値を書き出してしまっていますね。

guruguru2
質問者

お礼

アドバイスありがとうございます。 お礼が遅くなってしまって申し訳ありません。 載せていただいたURLを参考にしてみます。 ありがとうございます。

関連するQ&A