Help us understand the problem. What is going on with this article?

ASP.NETのセッション管理方法を整理する

More than 3 years have passed since last update.

0.前置き

ASP.NETのにおけるセッション状態の管理方法についてまとめます。
本記事の内容は、ASP.NET 4.6を対象としています。

1.セッションの説明

Webアプリケーションを実現するHTTPは状態を持たない(ステートレスな)プロトコルです。そのため、「ユーザーが認証済みであること」や「ページをまたがったデータの管理」をする場合には、どこかでその状態を管理する必要があります。ASP.NETではその管理手法として、クッキー(cookie)、セッション、一時データ(TempDataやViewState)などがあります。

セッションは、サーバーサイドでデータを管理し、クライアントサイドにはそのデータへアクセスするキー(セッションID)のみを提供する(管理はクッキー)手法をとります。そのため、クッキーと比較し改ざんされる危険性が少ないため比較的安全な手法と言えます。

ASP.NETは、このセッションをサーバー上で管理する方法を4つ用意しています。

管理方法(mode名称) 説明
InProc インプロセスモード(デフォルトの設定)。セッション情報をIISプロセス(IISアプリケーションプール)上で管理します。IISが再起動した場合は、セッション情報も消失します。簡易的なアプリケーション向け。
StateServer 「ASP.NET状態サービス」というWindowsサービスのプロセスで管理します。IISとは別のプロセスで管理するため、IISを再起動したとしても、セッション状態は維持されます。また特定のIISプロセスで管理されていないため、負荷分散の構成(クラスター構成)をとっているような複数台のサーバで共通したセッション管理を行うことができます。
SQLServer SQL Serverのデータベースでセッション状態を管理します。StateServerと同様のメリットがあります。
Custom 開発者が定義した方法でセッション状態を管理します。上3つはマイクロソフトが事前に用意した定義です。それ以外の仕組みを利用したい場合には、自身で作成して利用することができます。例えばRedisのようなNoSQLでセッション管理を行いたい場合など。
Off セッション管理を行わない設定。

2.定義方法

どの管理方法を選択するかという定義は、Web.configで行います。設定のサンプルは下記の通りとなります。

<configuration>
  <system.web>
    <sessionState mode="StateServer"
      stateConnectionString="tcpip=SampleStateServer:42424"
      cookieless="false"
      timeout="20"/>
  </system.web>
</configuration>

MSDNに詳しく説明が載っているので、参考にすると良いです。
MSDN:セッション状態モード

3.Custom用のプロバイダを設定する。

独自のプロバイダをいくつか探して設定してみます。
これは別のQiitaで書くつもりです。以下を頑張る予定。

ASP.NETのセッション管理にAzure Redis Cacheを使ってみる
AWS DynamoDBを使ったセッション管理

84zume
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした