- ベストアンサー
二人でWEBアプリを動かしているとセッションが切れる
Windows2000 + SQLServer2000 + IIS5.0 + VBScriptで開発を行っています。二人で開発しているのですが、作成したアプリケーションを同時に動かしている時に、セッションが切れてしまう現象が頻繁に発生します。 このWEBアプリケーションは、ユーザIDとパスワードでログインするとSESSION変数に値を入れます。すべてのページにログインチェックのコードを埋め込んでおり、SESSION変数に値がないとログインのエラーとします。 一人で動かしているときには、20分程度の放置でセッションが切れてログインエラーとなるのですが、二人で同時にログインして動かしていると、2分程度でログインエラーとなってしまいます。 イベントログを見ても気になるエラーは発生していないように思われます。原因としてどのようなものが考えられるでしょうか。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
20分でセッションが切れるのはSession.Timeoutを記述していなければ、 IIS5のデフォルト設定なので、正しい動作だと思われます。 あと思いつく範囲では global.asa を二人のどちらかが開いたままで、エディタが自動保存していないでしょうか? なお、別々のユーザーが同じセッション変数に異なる値を入れても問題ありません。 ANo.2で言われていることはアプリケーション変数の場合ですね。 同様にユーザーAさんとBさんがログイン中で、ユーザーAさんが Session.Abandon したり、タイムアウトになってもユーザーBさんのセッションまで切れることはありません。
その他の回答 (3)
- exepieco
- ベストアンサー率27% (25/91)
あー、ごめんなさい。 勘違いは私でしたー失礼しましたm(_ _)m
- exepieco
- ベストアンサー率27% (25/91)
ん?Session(USER_ID) にそれぞれが値を入れあっているということでしょうか?それは、ひとつの変数に複数のクライアントが入れあう、という状況ではないですか? クライアント側で保持する変数と、サーバサイドで保持する変数について誤解があるのではないでしょうか? 通常、Session変数を使うときに、クライアントごとの区別をつける場合は、Session(USER_ID_[IPアドレスなど])というクライアント独自性が保証される名前を付けないと他のクライアントから変更されてしまいますよ うーん、違ったことをいってるかしら・・・
お礼
ありがとうございました。メモリに負荷が掛かっていたようです。 やはり、SESSION変数は別々のクライアントが同一の変数に値をセットしても、別々の値として使用できます。 AさんのSESSION("USERID")とBさんのSESSION("USERID")は別々のメモリ空間で値を保持するようです。
- exepieco
- ベストアンサー率27% (25/91)
文面から判断できる範囲で、ですが Session変数のチェックはどの程度しているのでしょうか 二つのクライアントから、同じSession変数に違う値を入れあっていませんか? または、どこかでSession abandon してるとか(ないですよね) あとは。。クッキを全削除とか(ないですね) 同じ変数にそれぞれが別の値を入れあい、内容チェックで(アプリが)エラーを出しているのではないかと推測しますが、いかがでしょ?
補足
早速のご回答ありがとうございます。 >二つのクライアントから、同じSession変数に違う値を入れあっていませんか? これは問題ないと思います。SESSION変数「UserID」に、それぞれがべつの値を入れてもOKですよね?
お礼
ありがとうございました。メモリに負荷が掛かっていたようです。