プロが教えるわが家の防犯対策術!

Windows2000 + SQLServer2000 + IIS5.0 + VBScriptで開発を行っています。二人で開発しているのですが、作成したアプリケーションを同時に動かしている時に、セッションが切れてしまう現象が頻繁に発生します。
このWEBアプリケーションは、ユーザIDとパスワードでログインするとSESSION変数に値を入れます。すべてのページにログインチェックのコードを埋め込んでおり、SESSION変数に値がないとログインのエラーとします。
一人で動かしているときには、20分程度の放置でセッションが切れてログインエラーとなるのですが、二人で同時にログインして動かしていると、2分程度でログインエラーとなってしまいます。

イベントログを見ても気になるエラーは発生していないように思われます。原因としてどのようなものが考えられるでしょうか。

よろしくお願いいたします。

A 回答 (4件)

20分でセッションが切れるのはSession.Timeoutを記述していなければ、


IIS5のデフォルト設定なので、正しい動作だと思われます。

あと思いつく範囲では global.asa を二人のどちらかが開いたままで、エディタが自動保存していないでしょうか?

なお、別々のユーザーが同じセッション変数に異なる値を入れても問題ありません。
ANo.2で言われていることはアプリケーション変数の場合ですね。

同様にユーザーAさんとBさんがログイン中で、ユーザーAさんが Session.Abandon したり、タイムアウトになってもユーザーBさんのセッションまで切れることはありません。
    • good
    • 0
この回答へのお礼

ありがとうございました。メモリに負荷が掛かっていたようです。

お礼日時:2005/06/09 06:34

あー、ごめんなさい。


勘違いは私でしたー失礼しましたm(_ _)m
    • good
    • 0

ん?Session(USER_ID) にそれぞれが値を入れあっているということでしょうか?それは、ひとつの変数に複数のクライアントが入れあう、という状況ではないですか?


クライアント側で保持する変数と、サーバサイドで保持する変数について誤解があるのではないでしょうか?
通常、Session変数を使うときに、クライアントごとの区別をつける場合は、Session(USER_ID_[IPアドレスなど])というクライアント独自性が保証される名前を付けないと他のクライアントから変更されてしまいますよ

うーん、違ったことをいってるかしら・・・
    • good
    • 0
この回答へのお礼

ありがとうございました。メモリに負荷が掛かっていたようです。

やはり、SESSION変数は別々のクライアントが同一の変数に値をセットしても、別々の値として使用できます。

AさんのSESSION("USERID")とBさんのSESSION("USERID")は別々のメモリ空間で値を保持するようです。

お礼日時:2005/06/09 06:36

文面から判断できる範囲で、ですが


Session変数のチェックはどの程度しているのでしょうか
二つのクライアントから、同じSession変数に違う値を入れあっていませんか?
または、どこかでSession abandon してるとか(ないですよね)
あとは。。クッキを全削除とか(ないですね)

同じ変数にそれぞれが別の値を入れあい、内容チェックで(アプリが)エラーを出しているのではないかと推測しますが、いかがでしょ?

この回答への補足

早速のご回答ありがとうございます。

>二つのクライアントから、同じSession変数に違う値を入れあっていませんか?

これは問題ないと思います。SESSION変数「UserID」に、それぞれがべつの値を入れてもOKですよね?

補足日時:2005/06/08 13:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!