1111 配置 SQL Server 模式
若要使用 SQL Server,首先在将存储会话状态的 SQL Server 计算机上,运行 InstallSqlState.sql 或 InstallPersistSqlState.sql。两个脚本均创建一个名为 ASPState 的数据库,它包含若干存储过程。两个脚本间的差异在于放置 ASPStateTempApplications 和 ASPStateTempSessions 表的位置。InstallSqlState.sql 脚本将这些表添加到 TempDB 数据库,该数据库在计算机重新启动时将丢失数据。相反,InstallPersistSqlState.sql 脚本将这些表添加到 ASPState 数据库,该数据库允许在计算机重新启动时保留会话数据。
默认情况下,两个脚本文件均安装在下面的位置:
systemroot/Microsoft.NET/Framework/versionNumber
然后,在应用程序的 Web.config 文件中,将 <sessionState> 元素的 mode 属性设置为 SQLServer。最后,将 sqlConnectionString 属性设置为 Integrated Security=SSPI;data source=serverName;。
下面显示了 SQL Server 模式的一个配置设置示例。
<configuration>
<system.web>
<sessionState mode="SQLServer"
sqlConnectionString=" Integrated Security=SSPI;data source=dataserver;"
cookieless="false"
timeout="20"/>
</sessionState>
</system.web>
</configuration>
在 SQL Server 模式中,也可以将会话状态配置为在故障转移群集中工作。故障转移群集是两个或更多相同的冗余 Web 服务器,它们将会话数据存储在一台单独的计算机上的 SQL Server 数据库中。如果一个 Web 服务器出现故障,群集中的另一个服务器会接管它的工作,为请求提供服务,会话数据不会丢失。若要配置故障转移群集,请将 Web 服务器的 Web.config 文件中的 <machinekey> 元素设置为相同的值。然后将 Web 服务器的 SQL 连接字符串设置为指向计算机上存储会话数据的 SQL Server 数据库。
下面的示例显示如何以只读方式访问现有的会话状态数据,以动态生成包含用户信息和个人股票证券信息的页。
<%@ Language=C# EnableSessionState=true %>
<html>
<head>
<script runat=server>
void Page_Load(Object Sender, EventArgs E) {
// Obtain data table of user's personal stock data.
DataTable MyStocks =
(DataTable)Session["PersonalStockData"];
// Update HTML output with session values.
Name.InnerText = Session["FirstName"].ToString();
SpouseVal.InnerText = Session["SpouseName"].ToString();
foreach (DataRow Stock in MyStocks.Rows) {
StockList.AddItem(Stock["Symbol"] + ": "
+ Stock["Name"]);
}
}
</script>
</head>
<body>
Hi <span id="Name" runat="server"/>, your spouse is: <span id="SpouseVal" runat="server"/>.
Here are the stocks you and your spouse currently own:
<acme:listbox id="StockList" runat="server">
<! — List box is dynamically populated from code. -->
</acme:listbox>
</body>
</html>
现在所有的Session变量都储存在数据表中,而不是内存中了。你可打开ASPStateTempSessions表来查看这些Session数据了。
删除这些数据库和表
如果你不喜欢这个数据储存方式,看得实在是不爽,那么你可以把这些表和数据库完全删除掉。这个也不要担心这种删除会影响数据库(因为害怕误删除一些数据),因为微软同样也得供给你们一个删除SQL 文件,名叫UnintallSQLState.sql。它与IntallSQLState.sql一样放在.Net的Config目录中