- Introduction
- Configuring In-Process Session State
- Configuring Out-of-Process Session State
- Disabling or Enabling Session State at the Page Level
- Working with Cookieless Session-State Management
- Summary
Configuring Out-of-Process Session State
Out-of-process session state management refers to some other application managing session information. You have two choices here. You can use the aspnet_state.exe state server or a Microsoft SQL Server instance. These servers require a moderate amount of additional configuration.
Out-of-process session management is slower than in-process session management but is tolerant of IIS and aspnet_wp.exe restarts and scale for multiprocessor, multi-machine configurations. For a local intranet, the default in-process session management might be suitable. However, if you need some resiliency or can't afford to lose session information, you may want to configure one of the out-of-process session servers.
Configuring the Session State Server
To configure the aspnet_state.exe session server, you need to change the Web.config file's mode setting to StateServer and update the stateConnectionString for remote session management. You also need to ensure that the aspnet_state.exe service is running on the box that will be managing session information.
For a quick test, you can open the Microsoft Visual Studio command prompt, which simply sets environment variables to include Visual Studio .NET paths, and type net start aspnet_state.exe. If you want the state server to run each time you reboot, change the ASP.NET State Service (see Figure 1) from manual to automatic startup. Changes to Windows services are made in the Windows Services applet dialog box, as shown in the figure.
Figure 1 The ASP.NET State Services properties dialog box.
You store information in Session using the state server precisely the same way you store information in Session when using in-process management. The only requirement is that the data can be serialized. Listing 3 demonstrates how to place a DataSet into the session cache. (The example was tested using the out-of-process state server.)
Listing 3Creating an OleDbDataAdapter, Filling a DataSet, and Placing That DataSet in the Session Cache
private void Page_Load(object sender, System.EventArgs e) { const string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data " + @"Source=C:\Program Files\Microsoft Visual " + @"Studio\VB98\NWIND.MDB;Persist Security Info=False"; OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM CUSTOMERS", ConnectionString); DataSet dataSet = new DataSet("Customers"); adapter.Fill(dataSet); Session["Data"] = dataSet; }
The listing uses a connection string to a Microsoft Access sample database. An OleDbDataAdapter is created and initialized with a query and the connection string. (Employed in this way, the OleDbDataAdapter creates the connection object.) A DataSet object is created, and the adapter is used to fill the DataSet. In the last statement, the DataSet is stuffed tidily into the session; it can be retrieved anywhere in the application using the same key (Data) as long as the session hasn't expired.
To use the out-of-process state server, make sure that the ASP.NET state server has been started, as described earlier in this section, and modify the Web.config file to change the sessionState mode attribute to SessionState.
Configuring SQL Server Session State
Microsoft SQL Server can be configured as the big gun of session state servers. This is accomplished by running the InstallSqlState.sql script (available in the c:\winnt\Microsoft.NET\Framework\version\ folder by default, where version represents a folder name for the version of the .NET Framework you have installed).
You need at least a desktop copy of SQL Server, such as MSDE, to use SQL Server for session state. You also need to run InstallSqlState.sql with tools such as the Microsoft SQL Server Query Analyzer or isqlw.exe utility (shipped with Visual Studio 6).
NOTE
You can uninstall the SQL Server session database by running UninstallSqlState.sql. This script can be found in the same Framework folder as InstallSqlState.sql.
After you run InstallSqlState.sql, you'll find a database named ASPState in your SQL Server instance. ASPState contains stored procedures for managing session state; the actual session data is stored in a database named tempdb. You can explore these two databases to look at how the session data is actually stored. In general, the data is serialized and stored in tempdb in binary form by session ID.
Finally, to switch over to SQL session management, you need to change the sessionState mode attribute to SQLServer. If you're running the SQL Server instance on your workstationa good approach while developingthe default sqlConnectionString in the Web.config file will connect you to the ASPState database.
To test your configuration, you can run the code shown earlier in Listing 3. You'll notice a marked slowdown in session caching, and you should see some rows of data in the tempdb database. Everything else works without change. Of course, you would use this option when session data must be very reliable relative to the negative impact on performance.