2012-02-02 5 views
0

IIS V6.0とASP.NETwith .NET Framework 3.5 SP1で作業しています。IIS ASP.netセッションリーク/値を失う時間の5%

ほとんどの時間私は、ASP.NETのセッション変数を失うリクエストに関する問題を修正しています。それはイライラしている。例えば

MyOwnClass myObject= Session["something"] as MyOwnClass; 
:Aは

Session["something"] = myObject; //on Page A 

とBに自分のクラスのオブジェクトを与えているとページBがそのようにそれを使用したいと考えていますが、私はページAとページBを持っています

これは約95%の時間で動作します。しかし、B上の他の5%myObjectnullですが、もう一度ページをリフレッシュしていますが、再びセッションに入れたオブジェクトかもしれません。

どうすれば可能ですか?それについて私は何ができますか?

さまざまなブラウザで発生しています。だから、コンパニオンIE7でさえ問題の一部ではありません。私は様々なSession TimeOut Lengthを試しましたが、何もありません。

+2

セッションを保存するために使用していますか? InProc、StateServer、またはSQL Server? –

+0

InProcセッションマネージャを使用していますか?はい、これが問題の場合は、SQL – Aristos

+0

に移動してください。どのように調べることができますか? @ZachGreen (そのSQLではない) – Harry

答えて

2

まず、InProcセッション状態を使用していると思います。アプリケーションプールがリサイクルすると、セッション中のものが失われます。ここで

はII6はは、StateServerにインプロセスを変更するためのガイドです:http://dotnetguts.blogspot.com/2009/06/steps-for-session-inproc-mode-to.html

+0

それは面白い、それは、より多くの人々が私のサイトを使用しているので、悪化していくような気がします。 – Harry

+0

IISをチェックインして、サイトがInProcをセッションハンドラとして使用しているかどうかを確認できます。そうであれば、状態サーバーに切り替えることができます(asp。ネット州のサーバーがサービスで開始されているかどうかを確認して問題が解決するかどうかを確認します)。 –

+0

これはIIS 6の手順を示しています。http://dotnetguts.blogspot.com/2009/06/steps-for-session-inproc-mode-to.html –

3

おそらく "いつか" myObjectはMyOwnClassタイプではなく、例外が発生しない場合は安全なキャストを使用しているため、安全キャストはオブジェクトがキャスト可能ではないnullを返します。 tryこれは、あなたが確認する必要があり、あなたの問題が解決しない場合は

try{ 
    MyOwnClass myObject=(MyOwnClass)Session["something"]; 
    } 
catch(InvalidCastException ex){ 
    //handle the exception 
    } 

:代わりに、明示的なキャストを使用する

  • をあなたは変更しないアプリケーションプール
  • を再起動しませんあなたのウェブ設定の何でも
  • ウェブファームとウェブガーデン:あなたのウェブサイトにウェブファームとウェブガーデンを設定している場合。 Inprocセッション共有によって問題が発生する可能性があります。
  • コード内に問題があるため、ウェブサイトのw3pプロセスが再起動しています。またはメモリリーク。
関連する問題