- PR -

ポストバックするとSession変数が初期化されてしまう!!

投稿者投稿内容
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-12-22 12:22
Sharedになっている時点でSessionに格納しなくても、保持されたままになります。

が、

Sharedになっている時点でSession毎にインスタンスが作成されるわけではなく、Application全体で一つのインスタンスになってしまうので、Session毎に管理するのは不適切です。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
未記入
会議室デビュー日: 2004/11/24
投稿数: 12
投稿日時: 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/11/24
投稿数: 12
投稿日時: 2004-12-24 10:37
Sessionに追加するときに、Session.Countはちゃんと+1されます!!
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-12-24 10:40
引用:

未記入さんの書き込み (2004-12-24 10:09) より:
NAL-6295さんへ

 >Sharedになっている時点でSessionに格納しなくても、保持されたままになります。
 
 >が、Sharedになっている時点でSession毎にインスタンスが作成されるわけではな 
 >く、Application全体で一つのインスタンスになってしまうので、Session毎に管理 >するのは不適切です。

 ↑そのとおりだと思います。
  Session変数に格納しても、SharedにしてもdvListが初期化されてしまうのです。


いや・・・、「SharedにしてもdvListが初期化...」ってSharedにすること自体が適切ではな
いと仰ってることを理解できていますか?
未記入
会議室デビュー日: 2004/11/24
投稿数: 12
投稿日時: 2004-12-24 11:32
すいません。Sharedの意味が分かっていませんでした。
Sharedで定義すること事態がおかしいのですね。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-12-24 14:38
一度、問題となる情報を整理してみては如何でしょう!?
最小構成にてデバッグし、それでも再現するようであれば提示可能な範囲でソースを提示してみるとか。

スキルアップ/キャリアアップ(JOB@IT)