更新 : 2007 年 11 月
Microsoft ASP.NET では、複数の要求にわたるユーザー セッションの情報を保存するために使用できる、HttpSessionState オブジェクトが用意されています。ASP.NET のセッション管理機能はスケーラブルかつ堅牢な機能で、複数の Web ファームにわたって使用することが可能です。
クッキーレス セッションに関する考慮事項
既定では、ASP.NET のセッション オブジェクトはクライアント側の Cookie を使用して識別子を格納します。この識別子は、サーバーのラウンド トリップ間のセッションを特定するために使用されます。ただし、ASP.NET はセッション ID を含む新しい URL にクライアントを最初にリダイレクトする、Cookie なしのセッション モードもサポートしているので、URL からセッション ID を自動的に解析します。
セッション状態を使用する ASP.NET モバイル Web ページの場合は、次の要因を考慮する必要があります。
モバイル デバイスやゲートウェイの中には、Cookie をサポートしないものがあります。このような場合、Web サーバーのセッション管理を Cookie なしのモードに設定する必要があります。
一部のモバイル デバイスでは、Cookie なしのセッション管理によって URL がリダイレクトされた後の、相対 URL の処理に問題があります。
Cookie の代替手段の使用
一部のモバイル デバイスは Cookie をサポートしていないため、永続的な状態が必要な状況に適した代替手段を見つける必要があります。たとえば、ユーザーがページにログオンした場合に、残りのセッションに使用されるログイン ID をアプリケーションが割り当てることができます。通常、このような形式の認証には Cookie が使用されます。これは "Cookie ベースの認証" と呼ばれています。ただし、Cookie ベースの認証は、Cookie をサポートしないデバイスでは使用することができません。その代わり、別の状態管理メカニズムを使用する必要があります。
セッション状態
代替手段の 1 つは、セッション状態を使用することです。Cookie を使用せずに動作するようにセッション状態を構成できるため、ユーザーはセッション状態で ID を保持できます。ただし、この方法の欠点は、セッションが終了すると情報も失われることです。もう 1 つの欠点として、この方法では常にセッション状態を使用する必要があります。
隠し変数
ASP.NET モバイル Web ページには、隠し変数を書き出すモバイル コントロールはありません。代わりに、フォームには MobilePage クラス内に HiddenVariables と呼ばれるコレクションが用意されています。このコレクションに格納されている、名前と変数のすべての組み合わせは隠し変数として保持されています。HiddenVariables コレクションは、フォームが送信されたときに、これらの隠し変数によって自動的に再構築されます。
この代替手段では、ページ上の隠し変数が使用されます。隠し変数は、同じページへの送信であるか、別のページへの送信であるかに関わらず、フォームの送信の一部として自動的に再送信されます。