- - PR -
ポストバックするとSession変数が初期化されてしまう!!
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-12-22 12:22
Sharedになっている時点でSessionに格納しなくても、保持されたままになります。
が、 Sharedになっている時点でSession毎にインスタンスが作成されるわけではなく、Application全体で一つのインスタンスになってしまうので、Session毎に管理するのは不適切です。 _________________ 「伝える」とは「人に云う」と書く。 http://d.hatena.ne.jp/NAL-6295/ | ||||
|
投稿日時: 2004-12-24 10:09
数々のご返答ありがとうございます。
yyyさんへ >DataViewをSession変数に格納して利用したことがあるので、その辺は大丈夫だと思 >います。IISのオプション設定の「セッションの状態を有効にする」のチェックが外 >れていたりしていませんか? ↑IISオプション設定には、問題なく『セッションの状態を有効にする』のチェックが 付いていました。 todoさんへ >Label1.Text = Session.SessionID >お試し下さい。 >セッション切れであれば、値が変わります。 ↑セッションIDは、ポストバックする前にSessionに格納する値と同じでした。 たぶんセッション切れではないと思います。 NAL-6295さんへ >Sharedになっている時点でSessionに格納しなくても、保持されたままになります。 >が、Sharedになっている時点でSession毎にインスタンスが作成されるわけではな >く、Application全体で一つのインスタンスになってしまうので、Session毎に管理 >するのは不適切です。 ↑そのとおりだと思います。 Session変数に格納しても、SharedにしてもdvListが初期化されてしまうのです。 それで、一つ気づいたことがあります。調べていく中で、 IsNewSessionの値が、ポストバック前(@ Session("DataSource") = dvList )は、Falseになっていて、 ポストバック後(A dvList =Session("DataSource") )には、Trueになっているのです。 ということは、ポストバックした時に、新規にSession変数が作られている ということなのでしょうか?? なんとなく、これが原因になる気はするのですが、なぜ、ポストバック前は、IsNewSessionの値がFalseに ポストバック後にIsNewSessionの値がTureになっているのか分かりません。 すいませんが教えてください。 | ||||
|
投稿日時: 2004-12-24 10:37
Sessionに追加するときに、Session.Countはちゃんと+1されます!!
| ||||
|
投稿日時: 2004-12-24 10:40
いや・・・、「SharedにしてもdvListが初期化...」ってSharedにすること自体が適切ではな いと仰ってることを理解できていますか? | ||||
|
投稿日時: 2004-12-24 11:32
すいません。Sharedの意味が分かっていませんでした。
Sharedで定義すること事態がおかしいのですね。 | ||||
|
投稿日時: 2004-12-24 14:38
一度、問題となる情報を整理してみては如何でしょう!?
最小構成にてデバッグし、それでも再現するようであれば提示可能な範囲でソースを提示してみるとか。 |