- PR -

セッションIDが変わらない

1
投稿者投稿内容
ふにゃ
会議室デビュー日: 2004/12/17
投稿数: 7
投稿日時: 2005-11-11 15:14
困った時はよく拝見させて頂いております。
小生、ASP.NETにてWebアプリケーションを作成しておる者です。

リリースした客先からの不具合報告で
IEを2つ開けて(メーラーからのhref リンクから起動)
一つの画面を編集用画面、もう一つの画面を参照用に
使用していたら、参照用のデータが編集用のデータに置き変わってしまった
といった報告を受けました。

小生の方で簡単に
Response.Write(Session.SessionID);
を加え、確認した所、二つの画面のSessionIDが同じでした。

IEを普通にデスクトップのショートカットなどから
複数起動した場合はそれぞれ異なるSessionIDでしたが
Hyper LinkからIE起動した場合はどの画面もSessionIDが同じでした。

このような事は、周知の事なのでしょうか?
又、対策としてはどのようにしたら良いのでしょうか?

知る限りの技術系サイトを探したのですがどうも見つかりません。
「二つのIEがセッションを共有してしまうことがある」ということは
この会議室内でみつけることができましたが原因と対策について
八方ふさがりなので書き込みをしました。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-11-11 15:24
引用:

ふにゃさんの書き込み (2005-11-11 15:14) より:
Hyper LinkからIE起動した場合はどの画面もSessionIDが同じでした。

このような事は、周知の事なのでしょうか?



そうですね。
逆にそうでないと「子画面で処理する」などができなくなってしまいますからね。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-11-11 15:37
引用:

IEを普通にデスクトップのショートカットなどから
複数起動した場合はそれぞれ異なるSessionIDでしたが
Hyper LinkからIE起動した場合はどの画面もSessionIDが同じでした。


これが通常の動作です。
期待した動作になるようにプログラミングするしかないです。
編集用のデータ、参照用のデータとはっきり分かれているなら可能だと
思います。

_________________
たつごろー
codeseek
こみゅぷらす
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-11-11 16:10
引用:

IEを普通にデスクトップのショートカットなどから
複数起動した場合はそれぞれ異なるSessionIDでしたが
Hyper LinkからIE起動した場合はどの画面もSessionIDが同じでした。



HyperLinkの場合はブラウザセッションが引継がれます。
SessionIdはブラウザセッション単位のCookieで管理しているので、ASP.NETセッションも引継がれます。
一方、IExplore.exeを起動した場合は、新たなブラウザセッションが作られASP.NETセッションも新しく作られます。

対策としては

Session変数をなるべく使わない。
ViewStateやQueryStringを使う。
こういう方法も有効です。
ふにゃ
会議室デビュー日: 2004/12/17
投稿数: 7
投稿日時: 2005-11-11 16:23
一郎さん、たつごろーさん、todoさん
早速のご回答ありがとうございます。

やはり、動きとしてこれが通常なんですね
恥ずかしいですが、今までどんな方法でIEを起動しようが
異なるIDが振られると思っていました。目からウロコです。

todoさんから頂いたアドバイスを元に修正します。
恐らく、大幅な改修になると思いますが、身から出たサビなので
頑張ってやります。ありがとうございました。
1

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