用SQL Server保持会话状态
2007-05-16 09:34:18 来源:WEB开发网• InProc-存储在内存中。它的运行速度最快,但是当ASP.NET程序重复运行的时候所有的数据都会丢失。
• SQL Server-将数据存储在SQL Server中。由于它与页面服务器是分离的,因此它是最可信的。连接字符串会按照正常的顺序排列,以连接到SQL Server数据库中。
• StateServer-将数据存储在一个独立的页面服务器上(IIS)。这一选项利用了stateConnectionString这一属性。
所有的选项都使用保留。 cookieless属性会告知用户那些cookies是被存储在内存(虚拟的)中还是保留在Querystring/URL(真实的)中。timeout属性则会告知用户会话变量被存储的时间(没有接受任何命令)的长短。
设置 SQL Server
SQL Server需要一个特殊的数据库来进行状态管理。幸好.NET Framework安装包括了必备的文件,这些文件可以让它启动并立即运行。以下的脚本都安装了:
• InstallPersistSqlState.sql-包括建立数据库的脚本,这个数据库是持久状态管理中要用到的。
• UninstallPersistSqlState.sql-包括卸载持久状态管理的脚本。
• UninstallSqlState.sql-包括卸载状态管理的脚本。
这些脚本可能会从Query Analyzer中或通过使用isql.exe命令来运行。要进行状态管理的话,需要运行InstallSqlState.sql。脚本的结果是由一个名为ASPState的数据库创建出来的。它会处理会话变量的存储和保留问题。你可以通过一个简单的例子来测试其功能性。
下面的C#例子包括了将一个含有会话变量的页面格式变成另一种可以显示值的页面格式:
<%@ Page language="c#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML><HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
</HEAD>
<body MS_POSITIONING="GridLayout">
<script language="C#" runat="server">
private void Page_Load(object sender, System.EventArgs e) {
Session["FirstName"] = "Tony";
Session["LastName"] = "Patton";
Session["Site"] = "Builder.com";
Response.Redirect("WebForm2.aspx", true);
}
</script></body></HTML>
Here's the second Web form:
<%@ Page language="c#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML><HEAD><title>WebForm2</title></HEAD>
<body>
<script language="C#" runat="server">
private readonly string newLine = "<br>";
private void Page_Load(object sender, System.EventArgs e) {
Response.Write(Session["FirstName"].ToString() + " ");
Response.Write(Session["LastName"].ToString() + newLine);
Response.Write(Session["Site"].ToString() + newLine);
}
</script></body></HTML>
如果你是用VB.NET 进行开发,页面的格式就是下面这样的:
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
赞助商链接