マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

近年のWebアプリケーションでは

  • メモリの大容量化、
  • Sessionの冗長化構成対応

により、イントラネット内の業務システムでは、Sessionの使用は一般的になっている。

詳細

設定

Sessionの設定に関しては、web.configのsystem.web.sessionStateセクションにパラメタを設定する。

Session timeout

  • Session timeout値のASP.NETのデフォルトは20(分)となっている。
  • Session は、明示的な破棄、明示的なSession timeoutまで、メモリ上のオブジェクトが破棄されないのでメモリリークしないように注意して利用する。

Session Cookie

ASP.NETのデフォルトの設定では、Sessionの識別にCookieを使用する(CookieにSessionIDを保持する)。

Session Cookieは揮発性

  • 揮発性Cookieはプロセス内のメモリに保持されるため、ブラウザの別プロセスで共有することはできない。
    • このため、複数のブラウザ プロセスを起動した場合、揮発性Cookie であるSessionID に紐付くSessionは、其々、別のSessionとして認識される。
      • しかし、IE8からタブ毎のプロセスが採用され、プロセス間でSessionIDが共有されるようになった。このため、起動パラメタを変えることでSessionIDを分離できるようになった。
    • 揮発性Cookieは、ブラウザが閉じられると消失するため、揮発性CookieであるSessionID に紐付くSessionも消失する。
  • 不揮発性Cookie(ファイルに保存できるCookie)は、ブラウザの別プロセスで共有できるが、Session Cookieは不揮発性Cookieに設定できない。

携帯アプリの場合

なお、ASP.NET Mobile Web(携帯端末)の場合、端末によっては、Cookieをサポートしていないケースがあるため、SessionID(Cookie)の持ち回り方法が異なる。

web.configのsessionStateタグの定義を次のように、cookieless="true"に記述する。

<sessionState timeout="20" cookieless="true" mode="InProc"></sessionState>

この場合、下記に示す様に、ASP.NET Mobile Webにより、URLにForms認証の認証チケット(Cookie)が埋め込まれる。

http://[FQDN名]/[アプリケーション名]/S(SessionID)F(Forms認証の暗号化された認証チケット)/xxx.aspx

ASP.NET Mobile Web では、URLに埋め込まれたForms認証の認証チケット(Cookie)などの情報を上手く引き継ぐために、
画面遷移の際は、MobilePage?.RedirectToMobilePage? メソッドを使用する必要がある。

State Service・State Database

ASP.NETでは、同一プロセスだけでなく、別プロセス・サーバ(State Service)、SQL Server(State Database)などにSession情報を保存する機能もある。

負荷分散(冗長化)構成とSession

障害時にもSession情報を保持したり、クラスタ構成で1人のクライアントが複数のノードに振り分けられたりする場合、
別プロセス・サーバ(State Service)、SQL Server(State Database)などにSession情報を保存する方式を検討する。

この場合、Sessionに格納するオブジェクトはシリアル化可能に実装する必要がある。

参考

ASP.NET でSessionCookie、Cookie認証Ticketを共有する方法


Tags: :.NET開発, :ASP.NET, :ASP.NET Web Forms, :ASP.NET MVC


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-10 (水) 14:53:58 (151d)