2009-06-04 20 views
3

従来のプログラムではASP(ASP.Netではなく)を使用していますが、長いセッションの有効期限を20分に設定しても、私はまだセッションの期限切れのエラーボックスに気付くでしょう–タイムアウト設定前のASPセッションの有効期限

"あまりにも多くのアイドル時間、再度ログインしてください。

さらに分析するアイデアはありますか?すべてのクライアント/サーバーの組み合わせがこの奇妙な問題を満たしているわけではないので、コードバグかサーバー(ブラウザ)の設定の問題かどうかは不明です。

セッションは、ボックスが私のコードによってトリガされる有効期限が切れる:

<% 
    if session("timeToken") = "" then 
%> 

<script language = "JavaScript"> 
<!-- 
window.alert ("too much idle time, please login again"); 
//--> 
</script> 
<% 
response.End() 
end if 
%> 
+1

あなたが提供したコードはどこですか?クライアント側でjavascript/vbscriptを使用している場合は、セッション変数を取得できないはずです。サーバー側であれば、アラートを送信できません。 – Damovisa

+0

@Damovisa、私は自分のコードを投稿しました。どんなアイデアが間違っている? – George2

+1

Gotcha - 私はリフレッシュして、コードを更新しました:) – Damovisa

答えて

1

あなたの更新に基づいてアイデアのカップル:

  1. は、あなたのsession("timeToken")が空である可能性がある別の理由ですか?コードの別の部分がどこか、あるいは変数のどこかにスペルミスがありましたか?

  2. session("timeToken")の実際の値は、コードのどのように変更されますか?セッション開始時に設定されていますか?それは定期的に更新されますか?どのような価値が保存されていますか?

だけでいくつかのものが最初にチェックするために...あなたが書いたコードは、罰金のようですので、それはコードの問題ではない場合、それはおそらく本物のセッションの問題になります。

更新:

  • ASPのセッション状態は、一般的に、クッキーを使用して維持されている - あなたは、クライアントがクッキーが有効になっていることを確認してくださいだろうか?
  • ASPアプリケーションは複数のサーバーによってサービスされていますか? Webファームまたはクラスタからサービスが提供されている場合は、セッション状態がマシン間で持続できること、またはユーザーのセッションが「固定的」であること、つまり常に同じサーバーによって処理されることを確認する必要があります。

詳しい情報やヘルプがここで見つけることができます:http://msdn.microsoft.com/en-us/library/ms972338.aspx

+0

どういう意味ですか?2.セッションの実際の価値(「timeToken」)はどのように変化しますか? - コードから自動的にどのような状況で変更されますか? – George2

+0

セッションの有効期限に影響を与えるIISまたはOSまたはブラウザ側の設定を教えてもらえますか? – George2

+1

遅れて申し訳ありません - 私は私の答えにいくつかのアイデアを入れました – Damovisa

1

ことを確認してくださいサイトには、例えば機密フォルダ

同じケースにとどまります

http://myserver.com/MyWebSite/

それはあなたをログアウトしますので

http://myserver.com/mywebsite/

と同じセッションクッキーを持っていません。

+0

最初にその動作について聞いたことがありますか?あなたはこれのための任意の参照を提供できますか? – AnthonyWJones

+0

"Microsoft Internet Explorerバージョン4.0以降およびNetscapeブラウザを含む多くのWebブラウザは、Cookieパスの大文字と小文字を保持しています。 http://msdn.microsoft.com/en-us/library/ms525506.aspx – u07ch

+0

とIE 4が出てASPアプリケーションが台無しになった時のたくさんの苦い経験;) – u07ch

1

アプリケーションのタイムアウトにIISの制限がある可能性があります。

これを試してみてください:

  1. 右IIS
  2. であなたappフォルダをクリックし
  3. 次に行くのプロパティ] - > [仮想ディレクトリ]タブ - >右下
  4. に次に設定ボタンは、それが、その後、無効になっていた場合最初にボタンをクリックしてアプリケーションを作成します。
  5. 設定ウィンドウで、[オプション]タブをクリックすると、セッションタイムアウトがデフォルトで20(分)に設定されます。

これはあなたの祈りの祈りであることを願っています:)

+0

私は問題、他のヒントや新しいアイデアを決して解決しませんか? – George2

1

アプリが実行されているアプリケーションプールが何らかの理由でリサイクルされていないことを確認してください。例えば、それはより積極的なアイドルタイムアウトを持っています(テストシナリオでは、あなたはアプリケーションを使用することで唯一かもしれないので、それを使用していないのはアイドルセッションではなくアイドルアプリケーションを構成します)。

アプリプールを設定できるさまざまな理由でリサイクルが発生します。

例外のタイムアウトが発生していない場合は、イベントログを確認してください。珍しいことはありますか?

+0

私はあなたの返信、いくつかの質問/コメントに興味があります。1.なぜアプリケーションプールのリサイクルがセッションタイムアウトになるのですか(私はIISがライブセッションがあり、アプリケーションプールのリサイクルをしないでください) IISの現在のタイムアウト設定? 2. WindowsイベントログまたはIISログから、セッションタイムアウトの問題がアプリケーションプールのリサイクルによって発生しているかどうかを確認できますか。 3.「タイムアウトが発生したときにイベントログを確認する」 - IISのイベントログ?のOSまたは私のアプリケーションですか? – George2

+1

@George:1. IISがこのようにタイムアウトするのは悪い設計ではありません。アプリケーションプールは、その中で実行されているアプリケーションの種類についてはほとんど理解していません。したがって、セッション管理などのアプリケーション固有の機能を知らないことは非常に適切です。 IIS 6マネージャのオープンアプリケーションプールブランチでは、プールのプロパティを選択し、パフォーマンスタブでは、アイドルタイムアウトセクションがあります。 IIS 7では、[詳細設定]をクリックします。アクションプールでアプリケーションプールを選択すると、アイドルタイムアウトは[プロセスモデル]カテゴリに表示されます。 – AnthonyWJones

+1

@George:2と3。特にリサイクルされたものは記録されていません。 IIS7では、アプリケーションプールの詳細設定には、リサイクルイベントログエントリの値があり、リサイクルイベントによってログが生成されるように構成できます。 IIS 6にこのような機能があっても、私が見ることのできる管理UIに公開されていなければ、私は驚かないでしょう。 – AnthonyWJones

関連する問題