用SQL Server保持会话状态
2008-04-29 20:09
375 查看
在调用服务器后要继续在服务器中保留数据通常很难,你可以用SQL Server来进行会话状态管理(用户会话数据)。以下教你怎样用它来进行管理。
在页面开发中,在服务器调用里保留数据是一个常见的不好解决的难题。你也许需要为你的应用程序或特殊用户的会话保存信息。存储这样的数据被称为状态管理,ASP.NET为你提供了一些方法,这些方法能让你通过各种途径完成这一任务。这包括将数据存储在一个状态服务器的内存中,或者通过Microsoft SQL服务器。本文主要讨论了用SQL服务器来进行会话状态管理(用户会话数据)。
为什么需要进行状态管理?
在设置和使用SQL Server之前,你也许会想有必要这样做吗?页面开发还有更让人烦恼的一面,那就是HTTP是一项无状态协议。它的运行是断断续续的,每个页面都会按接受到的命令运行。命令执行完以后,所有用过的数据都会丢失。服务器不会存储关于那些调用的任何记忆。也就是说,它不会存储相关记忆,除非有特殊的指令让它存储。
会话变量
以下是使用会话变量的格式:
C#: Session["variable_name"] = value;
VB.NET: Session("variable_name") = value
当这个值被存储了,用户就可以在整个会话中使用它了。会话结束后,变量也就丢失了。你也可以使用回归状态管理(这是我们下一次要讨论的话题)来处理这些丢失的值。
ASP.NET状态管理
ASP.NET允许你通过一个状态服务器或SQL服务器将会话数据存储在内存中。存储的位置由应用程序的页面配置文件来决定。状态管理选项是在系统中的sessionState元素中,页面元素是在状态管理中进行设置的。以下的示例显示了怎样使用SQL Server:
所有的选项都使用保留。 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#" %>
private void Page_Load(object sender, System.EventArgs e) {
Session["FirstName"] = "Tony";
Session["LastName"] = "Patton";
Session["Site"] = "Builder.com";
Response.Redirect("WebForm2.aspx", true);
}
Here's the second Web form:
<%@ Page language="c#" %>
private readonly string newLine = "
";
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);
}
如果你是用VB.NET 进行开发,页面的格式就是下面这样的:
<%@ Page Language="vb" %>
Private Sub Page_Load(sender As Object, e As System.EventArgs)
Session("FirstName") = "Tony"
Session("LastName") = "Patton"
Session("Site") = "Builder.com"
Response.Redirect("WebForm2.aspx", true)
End Sub
Here's the Page_Load event on the second form:
<%@ Page Language="vb" %>
Private ReadOnly newLine As String = "
"
Private Sub Page_Load(sender As Object, e As System.EventArgs)
Response.Write(Session("FirstName").ToString() + " ")
Response.Write(Session("LastName").ToString() + newLine)
Response.Write(Session("Site").ToString() + newLine)
End Sub
关于卸载状态管理功能的一个注释:微软建议在执行卸载脚本以前先取消World Wide Web Publishing服务。你可以在命令行输入net stop w3svc命令来完成这一步。你可以用net start w3svc命令重启机器。
你可以在SQL Server中检测tempdb数据库,这样你就可以毫不费力地看到会话管理属性是怎样运行的。它使用两个临时表格来进行会话管理:ASPStateTempApplications和 ASPStateTempSessions.
一种可行的选择
如果你担心会由于 Web服务器停止运行而失去会话状态数据的话,SQL Server是一种很好的选择。不过由于数据库的交互作用,它的性能也许会受些影响,但是它还是最值得的信赖的而又可行的方法。
在页面开发中,在服务器调用里保留数据是一个常见的不好解决的难题。你也许需要为你的应用程序或特殊用户的会话保存信息。存储这样的数据被称为状态管理,ASP.NET为你提供了一些方法,这些方法能让你通过各种途径完成这一任务。这包括将数据存储在一个状态服务器的内存中,或者通过Microsoft SQL服务器。本文主要讨论了用SQL服务器来进行会话状态管理(用户会话数据)。
为什么需要进行状态管理?
在设置和使用SQL Server之前,你也许会想有必要这样做吗?页面开发还有更让人烦恼的一面,那就是HTTP是一项无状态协议。它的运行是断断续续的,每个页面都会按接受到的命令运行。命令执行完以后,所有用过的数据都会丢失。服务器不会存储关于那些调用的任何记忆。也就是说,它不会存储相关记忆,除非有特殊的指令让它存储。
会话变量
以下是使用会话变量的格式:
C#: Session["variable_name"] = value;
VB.NET: Session("variable_name") = value
当这个值被存储了,用户就可以在整个会话中使用它了。会话结束后,变量也就丢失了。你也可以使用回归状态管理(这是我们下一次要讨论的话题)来处理这些丢失的值。
ASP.NET状态管理
ASP.NET允许你通过一个状态服务器或SQL服务器将会话数据存储在内存中。存储的位置由应用程序的页面配置文件来决定。状态管理选项是在系统中的sessionState元素中,页面元素是在状态管理中进行设置的。以下的示例显示了怎样使用SQL Server:
所有的选项都使用保留。 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#" %>
private void Page_Load(object sender, System.EventArgs e) {
Session["FirstName"] = "Tony";
Session["LastName"] = "Patton";
Session["Site"] = "Builder.com";
Response.Redirect("WebForm2.aspx", true);
}
Here's the second Web form:
<%@ Page language="c#" %>
private readonly string newLine = "
";
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);
}
如果你是用VB.NET 进行开发,页面的格式就是下面这样的:
<%@ Page Language="vb" %>
Private Sub Page_Load(sender As Object, e As System.EventArgs)
Session("FirstName") = "Tony"
Session("LastName") = "Patton"
Session("Site") = "Builder.com"
Response.Redirect("WebForm2.aspx", true)
End Sub
Here's the Page_Load event on the second form:
<%@ Page Language="vb" %>
Private ReadOnly newLine As String = "
"
Private Sub Page_Load(sender As Object, e As System.EventArgs)
Response.Write(Session("FirstName").ToString() + " ")
Response.Write(Session("LastName").ToString() + newLine)
Response.Write(Session("Site").ToString() + newLine)
End Sub
关于卸载状态管理功能的一个注释:微软建议在执行卸载脚本以前先取消World Wide Web Publishing服务。你可以在命令行输入net stop w3svc命令来完成这一步。你可以用net start w3svc命令重启机器。
你可以在SQL Server中检测tempdb数据库,这样你就可以毫不费力地看到会话管理属性是怎样运行的。它使用两个临时表格来进行会话管理:ASPStateTempApplications和 ASPStateTempSessions.
一种可行的选择
如果你担心会由于 Web服务器停止运行而失去会话状态数据的话,SQL Server是一种很好的选择。不过由于数据库的交互作用,它的性能也许会受些影响,但是它还是最值得的信赖的而又可行的方法。
相关文章推荐
- 用SQL Server保持会话状态
- 用SQL Server保持会话状态
- 用SQL Server保持会话状态
- [ASP.NET]配置使用SQL Server保存会话状态
- URL重写 实现会话管理 http状态保持
- 使用Sql Server管理asp.net的web application会话状态
- 会话状态保持,JSESSIONID,COOKIE,URL重写
- 无法向会话状态服务器发出会话状态请求。请确保已启动 ASP.NET State service,并且客户端和服务器端口保持相同。
- 【状态保持】会话状态Session解析以及原理分析
- java实现自动登录无验证码登录后台并保持会话状态持续监控固定页面信息。
- 会话状态保持,JSESSIONID,COOKIE,URL重写
- mono for android 用ISharedPreferences 进行状态保持 会话保持 应用程序首选项保存
- Android WebView 与OkhttpClient登录状态保持一致,建立SESSION会话
- 会话状态保持,JSESSIONID,COOKIE,URL重写
- ios AFNetworking---cookie(session)保持登陆会话状态
- xamarin android用ISharedPreferences进行状态保持 会话保持 应用程序首选项保存
- [ASP.NET]配置使用SQL Server保存会话状态
- 配置使用SQL Server保存会话状态
- 无法向会话状态服务器发出会话状态请求。请确保已启动 ASP.NET State service,并且客户端和服务器端口保持相同。
- sql server 性能调优 从用户会话状态分析