1

何らかの理由で、セッションは予期せずに放棄され、アプリケーションに大混乱をもたらしています。セッションを使用するようにアプリをセットアップし、数か月間問題なく使用しています。ここで、コンテンツを追加して情報を保存すると、セッションは想定よりも20分のタイムアウトのかなり前にダンプされます。セッションに大量のデータを追加している可能性があるため(正確なサイズがわからない)、理由がわかりません。これは結局のところ私のローカルマシンです(Win 7、IIS、ASP.NET 4.0、4 GB RAMを使用)。

または、この発生には他の理由がありますか?何かご意見は?

ありがとう。

4

2 に答える 2

2

ASP.Netセッションはキャッシュに保存されます。メモリが不足している場合は、ダンプされます。セッションを保持するには、データベースまたはその他のストレージにセッションを保存する必要があります。関連するリンクを見つけようとします。セッションは、大量のデータを保存するためのものではありません。

これは、アウトプロセスセッションの使用方法を説明するリンクです。基本的に、ASP.Net / IISはインプロセスセッション(最速)を使用しますが、IISを実行しているサーバーの電源/ストレージによっても制限されるという考え方です。別の方法は、セッションステートファームまたはSQLサーバーを使用してセッションを格納することです。これらは少し遅いですが、より多くの柔軟性を提供します。セッションをシリアル化して決定する機能を考慮する必要があります。


これは私が読んでいる本からの抜粋です(DinoEspositoによるProgrammingMicrosoft ASP.NET 3.5):

セッション状態が失われることがあるのはなぜですか?

動作モードがInProcの場合、セッション状態は、ページ要求が処理されているAppDomainのメモリ空間にマップされます。これに照らして、セッション状態はプロセスのリサイクルの対象となり、AppDomainが再起動します。第2章で説明したように、ASP.NETワーカープロセスは定期的に再起動され、平均的な良好なパフォーマンスを維持します。これが発生すると、セッション状態が失われます。プロセスのリサイクルは、メモリ消費の割合と、処理されるリクエストの数によって異なります。プロセスは循環的ですが、サイクルの間隔に関して一般的な考慮を行うことはできません。セッションベースのインプロセスアプリケーションを設計するときは、このことに注意してください。原則として、セッション状態にアクセスしようとすると、セッション状態が表示されない場合があることに注意してください。

ナレッジベースの記事Q316148で、Microsoftは、一部のウイルス対策ソフトウェアがweb.configまたはglobal.asaxファイルを変更済みとしてマークしている可能性があることを示唆しています。これにより、新しいアプリケーションが開始され、その後、セッション状態が失われます。これは、あなたまたはあなたのコードがそれらのファイルのタイムスタンプを変更する場合にも当てはまります。また、Binディレクトリに追加したり、Binディレクトリから削除したりすると、アプリケーションが再起動します。

注:実行中のページでエラーが発生すると、セッション状態はどうなりますか?現在の辞書は保存されますか、それとも単に失われますか?リクエストの最後にページでエラーが発生した場合、つまりサーバーオブジェクトのGetLastErrorメソッドが例外を返した場合、セッションの状態は保存されません。ただし、例外ハンドラーでServer.ClearErrorを呼び出してエラー状態をリセットした場合、セッションの値は、エラーが発生しなかったかのように定期的に保存されます。

于 2011-02-15T20:16:28.630 に答える
1

セッション状態をインプロセスで使用していると想定しています。この場合、セッションを失う最も一般的な理由は、対応するアプリケーションプールがリサイクルされることです。アプリケーションプールのIIS設定を確認し、そのようなイベントのイベントログエントリを設定します。設定は、アプリプールの[詳細設定] ->[リサイクル] ->[リサイクルイベントログエントリの生成]にあります。それらをすべてtrueに設定し、セッション状態が失われる理由が得られるかどうかを確認します。

また、特定のサイトのデータを頻繁に変更すると、最終的にアプリプールのリサイクルがトリガーされます。

アプリプールのリサイクルに関するその他のアイデア:http:
//blogs.msdn.com/b/johan/archive/2007/05/16/common-reasons-why-your-application-pool-may-unexpectedly-recycle.aspx

于 2011-02-15T20:25:16.653 に答える