セッション変数は正確にどこに保存されますか?クッキー?サーバーメモリ?
繰り返しますが、アプリケーション変数はどこに保存されますか?
Sessionに入れられた変数は、構成されたSessionStateProvider
が変数を格納するように構成されている場所に格納されます。
デフォルトのSessionStateProvider
は、インプロセス(InProc
)セッションと呼ばれるものを使用します。この保存場所は、ASP.NETワーカープロセスのメモリスペース内のサーバーメモリ内にあります。
独自のSessionStateProvider
を構成して、プロセス変数などの別の場所にセッション変数をデータベースに保存できます。
アプリケーション変数はApplicationState
に保存され、ASP.NETワーカープロセスのメモリスペースにも保存されます。セッション状態とは異なり、アプリケーション状態はすべてのユーザーとセッションに適用されます。私の知る限り、ApplicationStateを他の場所に保存する設定はありません。大量のアプリケーションデータを保存する必要がある場合は、 ASP.NET Caching をご覧ください。
セッション変数はサーバーメモリとディスクにアプリケーション変数です。
ASP.NETドキュメント から:
ASP.NETセッション状態は、セッション変数のいくつかのストレージオプションをサポートしています。各オプションは、セッション状態のモードタイプとして識別されます。デフォルトの動作は、ASP.NETワーカープロセスのメモリ空間にセッション変数を保存することです。ただし、セッション状態を別のプロセス、SQL Serverデータベース、またはカスタムデータソースに保存するように指定することもできます。アプリケーションでセッション状態を有効にしたくない場合は、セッションモードをオフに設定できます。
InProcセッションの場合、変数はASP.NETワーカープロセスのメモリにローカルに保存されます。アプリケーションの状態についても同様です。