locked
IIS7 セッションタイムアウト時間を6時間に設定しているにも関わらずそれ以前にタイムアウトが発生 RRS feed

  • 質問

  • ASP.netアプリケーションで、タイムアウトが発生し、Session情報がクリアされたことによる例外が発生します。

    IISでの、セッションタイムアウト設定値は以下です。

    ソースレベルでは、タイムアウト値を設定していません。

    ■ApplicationPool

    アイドル状態のタイムアウト:20分

    ワーカープロセスの最大数:1

    リサイクル-定期的な間隔:1740

    ■セッション状態

    モード:状態サーバー(タイムアウト:10)

    Cookie:使用する(タイムアウト:360)

    ■ASP-セッションプロパティ

    セッションの状態を有効にする:True

    タイムアウト:06:00:00

    上記のような設定の場合、6時間後にセッションが切れる想定でいました。

    ですが、それより早い時間にセッションタイムアウトが発生しているように見受けられます。

    <既に実行していること>

    【ケース1】

    1.アプリケーションを起動して、20分無操作状態で放置。

    2.w3wp.exeがタスクマネージャーから消えたことを確認。

    3.アプリケーションの操作を再開したが、正常に続けて利用可能なことを確認。

    ⇒アイドル状態のタイムアウト20分の動作は正常に動作しており、問題ない

    【ケース2】

    上記と同じ操作を、無操作状態1時間程(大体80分)で確認。

    ⇒Session情報が消滅し、アプリケーションで例外を検知。

    何分でSession情報が消滅したのかが特定できず、IISの設定のどの設定値が影響しているのかわからない状況です。

    本現象に対する資料や対策などありましたら、よろしくお願いいたします。

    2011年3月2日 4:48

回答

  • ASP.NETアプリケーションそのものには疎いので的外れかもしれませんが。 IEブラウザの既定のセッションタイムアウトが60分です。 http://techbank.jp/Community/blogs/nora/archive/2010/02/22/24847.aspx これが影響してたりしませんかね?
    • 回答の候補に設定 星 睦美 2011年3月18日 4:44
    • 回答としてマーク 星 睦美 2011年3月25日 0:57
    2011年3月2日 19:27
  • デフォルトの設定では、セッションはInProc(インプロセス)モードになっています。

    >アイドル状態のタイムアウト:20分

    >2.w3wp.exeがタスクマネージャーから消えたことを確認。

    この通り20分でプロセスが終了していますから、インプロセスのセッションも同時に破棄されてしまいます。セッションを維持したいのであれば、ステートサーバやSQLServerのモードを使用する必要があります。

    もちろんアイドルタイムアウトを延ばすという方法もなくはないですが、インプロセスのセッションは色んな理由で切れる可能性があるものだ、という前提を理解しておく必要があります(確実に維持することはできません)。

     --追記

    と思いましたが、状態サーバを使用している上での話ですね、読み落としていました。

    >モード:状態サーバー(タイムアウト:10)

    >Cookie:使用する(タイムアウト:360)

    この2つのタイムアウトは、正確にはどれのことを言っていますかね?

    • 回答の候補に設定 星 睦美 2011年3月18日 4:44
    • 回答としてマーク 星 睦美 2011年3月25日 0:57
    2011年3月3日 2:39

すべての返信

  • ASP.NETアプリケーションそのものには疎いので的外れかもしれませんが。 IEブラウザの既定のセッションタイムアウトが60分です。 http://techbank.jp/Community/blogs/nora/archive/2010/02/22/24847.aspx これが影響してたりしませんかね?
    • 回答の候補に設定 星 睦美 2011年3月18日 4:44
    • 回答としてマーク 星 睦美 2011年3月25日 0:57
    2011年3月2日 19:27
  • デフォルトの設定では、セッションはInProc(インプロセス)モードになっています。

    >アイドル状態のタイムアウト:20分

    >2.w3wp.exeがタスクマネージャーから消えたことを確認。

    この通り20分でプロセスが終了していますから、インプロセスのセッションも同時に破棄されてしまいます。セッションを維持したいのであれば、ステートサーバやSQLServerのモードを使用する必要があります。

    もちろんアイドルタイムアウトを延ばすという方法もなくはないですが、インプロセスのセッションは色んな理由で切れる可能性があるものだ、という前提を理解しておく必要があります(確実に維持することはできません)。

     --追記

    と思いましたが、状態サーバを使用している上での話ですね、読み落としていました。

    >モード:状態サーバー(タイムアウト:10)

    >Cookie:使用する(タイムアウト:360)

    この2つのタイムアウトは、正確にはどれのことを言っていますかね?

    • 回答の候補に設定 星 睦美 2011年3月18日 4:44
    • 回答としてマーク 星 睦美 2011年3月25日 0:57
    2011年3月3日 2:39
  • RieMS さん、こんにちは
    フォーラム オペレーターの星 睦美です。

    質問の状況は解決されましたでしょうか。ひとまず私のほうで[回答としてマーク]をさせていただきました。英語のMSDN ブログにASP.NETのセッション ロストについて書かれた記事がありますのでご紹介しておきます。もし引き続き疑問な点があればASP.NETで質問してみると情報があるかも知れません。

    ・A boring, but typical, difficult case ---- ASP.NET session lost:

    今後ともTechNet フォーラムをよろしくお願いします。

    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美
    2011年3月25日 1:00