36

Where exactly are session variables saved? Cookies? Server memory?

Again where are Application variables saved?

AsifQadri
  • 2,388
  • 1
  • 20
  • 30
Manish
  • 6,106
  • 19
  • 64
  • 90

3 Answers3

45

Variables put into Session are stored wherever the configured SessionStateProvider is configured to store them.

The default SessionStateProvideruses what's referred to as In Process (InProc) Session and the storage location for this is in server memory, inside the memory space of the ASP.NET worker process.

You can configure your own SessionStateProvider to store Session variables elsewhere, such as out of process, in a database.

Application variables are stored in ApplicationState which is also stored in the memory space of the ASP.NET worker process. Unlike Session State, Application State applies to all users and sessions. As far as I am aware, There is no configuration to store ApplicationState elsewhere; if you need to store lots of application data then you may want to look at ASP.NET Caching.

Russ Cam
  • 124,184
  • 33
  • 204
  • 266
  • Could you please provide an example how I could store my own session variable elsewhere? Also can the session variables still be accessed in the same way? – Neville Nazerane Mar 18 '14 at 05:36
  • @NevilleNazerane Take a look at the in-built `SqlSessionStateStore` in `system.Web` assembly; open it in Reflector, DotPeek or similar to see how it's implemented. Alternatively, you can get an idea of how to implement one here https://github.com/dnauck/AspSQLProvider/blob/master/src/NauckIT.PostgreSQLProvider/PgSessionStateStoreProvider.cs which is an implementation of a Sql Session stored in Postgres database – Russ Cam Mar 18 '14 at 17:26
  • I got what i needed from [this answer](http://stackoverflow.com/a/3151315/991609). It has got good explanation. Thank you – Neville Nazerane Mar 19 '14 at 07:05
  • Can we store the session variables on hard disk of the server? #interviewQuestions – Lakshay Dulani Mar 28 '14 at 06:55
  • 1
    @Lakshay you can store _Session_ wherever you like by writing your own `SessionStateProvider` – Russ Cam Mar 17 '15 at 22:09
12

Session variables are stored on Server Memory and Disk as Application Variables are.

From ASP.NET documentation:

ASP.NET session state supports several storage options for session variables. Each option is identified as a session-state Mode type. The default behavior is to store session variables in the memory space of the ASP.NET worker process. However, you can also specify that session state should be stored in a separate process, in a SQL Server database, or in a custom data source. If you do not want session state enabled for your application, you can set the session mode to Off.

Pablo Santa Cruz
  • 176,835
  • 32
  • 241
  • 292
4

For an InProc session, variables are stored locally in memory of ASP.NET worker process. Same goes for application state.

Dienekes
  • 1,548
  • 1
  • 16
  • 24