2012-02-24 20 views
0

web.configファイルでsessiontimeoutを次のように設定しました。タイムアウト前にセッションが終了しました

<sessionState timeout="120" 
     cookieless="false" 
      mode="InProc" 
     /> 

コードが正常に動作していますが、何回かセッションが自動的に10〜15分後に期限切れになります。

このエラーはすべてのブラウザに存在します。

ローカルアプリケーションで同じアプリケーションを実行すると、ローカルコンピュータ上で.netがうまく動作します。

まだglobal.ascxファイルを作成していないことにご注意ください。

+0

global.ascxはこの理由には関係ありません。ハンドルイベントのためのものです。それは起こりませんが、依然としてIISでセッション時間を変更しようとすることができます。実際に最初のprefはWeb.configであり、設定ファイルで設定されていない場合はIISを使用します。 –

+0

プロダクションサーバーについてお話ししていますか?どのWebサーバーアプリケーションを使用していますか? IIS? – Vedran

答えて

5

セッションは、アプリケーションのリサイクル時にもリセットされます。これは、 "bin"フォルダ内の何かを変更する、または "web.config"ファイルを変更するなど、サイト内のいくつかのものを変更するときに発生します。

またIISは、現在使用されていないと思われるアプリケーションを停止またはリサイクルすることがあります。

あなたが残した後でも、すべてを2時間メモリに保存してもよろしいですか?セッションを生かし続けるより良い方法は、AJAXコールバックを定期的に(数分ごとに)使用することです。 "session keep alive asp.net ajax"を検索してください。

+0

返信ありがとうございますが、ユーザーがウェブサイトにアクセスしたときに期限切れになりました。 –

+0

@UdaySatardekar - 「ページをリクエストしていますか? IISとASP.Netは要求を数えただけで、ユーザーがまだブラウザにページを持っているのを見ることができません。 "keep alive"は、ユーザーがまだ忙しいことをIIS/ASP.Netに伝えるのに役立ちます。 –

1

アプリが終了するセッションタイムアウトを確認しましたか? Session.Timeoutのresponse.writeを行います。この値はいくつかの場所で設定できます。

ユーザーがアクティブであることをどのように知っていますか?タイムアウト値を超える時間だけテキストを入力したり、スクロールしたり、読み込みしたりする場合、セッションはタイムアウトします。ブラウザはタイマーをリセットするためにサーバーへのHTTP要求を呼び出す必要があります。

Hansが述べたように、最小限のWebコンテンツにアクセスするために間隔を空けて実行するバックグラウンドスクリプトベースの「pinger」が役立ちます。

私はまだ別のWebアプリケーションを開始しようとしているので、この機能をほとんどのWebアプリケーションに追加する必要があるようです。という小さなパッケージを作成するように奮闘しました。このプロセスを高速化するには未来。あなたはここにそれを見つけることができます: http://kma.codeplex.com/

希望します!

関連する問題