- - PR -
セッションIDが変わらない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-11-11 15:14
困った時はよく拝見させて頂いております。
小生、ASP.NETにてWebアプリケーションを作成しておる者です。 リリースした客先からの不具合報告で IEを2つ開けて(メーラーからのhref リンクから起動) 一つの画面を編集用画面、もう一つの画面を参照用に 使用していたら、参照用のデータが編集用のデータに置き変わってしまった といった報告を受けました。 小生の方で簡単に Response.Write(Session.SessionID); を加え、確認した所、二つの画面のSessionIDが同じでした。 IEを普通にデスクトップのショートカットなどから 複数起動した場合はそれぞれ異なるSessionIDでしたが Hyper LinkからIE起動した場合はどの画面もSessionIDが同じでした。 このような事は、周知の事なのでしょうか? 又、対策としてはどのようにしたら良いのでしょうか? 知る限りの技術系サイトを探したのですがどうも見つかりません。 「二つのIEがセッションを共有してしまうことがある」ということは この会議室内でみつけることができましたが原因と対策について 八方ふさがりなので書き込みをしました。 | ||||
|
投稿日時: 2005-11-11 15:24
そうですね。 逆にそうでないと「子画面で処理する」などができなくなってしまいますからね。 | ||||
|
投稿日時: 2005-11-11 15:37
これが通常の動作です。 期待した動作になるようにプログラミングするしかないです。 編集用のデータ、参照用のデータとはっきり分かれているなら可能だと 思います。 _________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2005-11-11 16:10
HyperLinkの場合はブラウザセッションが引継がれます。 SessionIdはブラウザセッション単位のCookieで管理しているので、ASP.NETセッションも引継がれます。 一方、IExplore.exeを起動した場合は、新たなブラウザセッションが作られASP.NETセッションも新しく作られます。 対策としては Session変数をなるべく使わない。 ViewStateやQueryStringを使う。 こういう方法も有効です。 | ||||
|
投稿日時: 2005-11-11 16:23
一郎さん、たつごろーさん、todoさん
早速のご回答ありがとうございます。 やはり、動きとしてこれが通常なんですね 恥ずかしいですが、今までどんな方法でIEを起動しようが 異なるIDが振られると思っていました。目からウロコです。 todoさんから頂いたアドバイスを元に修正します。 恐らく、大幅な改修になると思いますが、身から出たサビなので 頑張ってやります。ありがとうございました。 |
1