网站首页 - 招生考试 - 复习资料 - 男生 - 女生 - 文学 - 创业 - 毕业论文 - 人才就业 - 家教 - 性教育 - 招聘会- 留学 - 校园 - 大学生论坛 - 高校 - 范文
自考群:11172260
考研群:32269935
专接本:17855970
  河北大学生网 >> 电脑学院 >> 服务器技术 >> SQL Server >> 正文
河北考试论坛

用SQL Server保持会话状态

http://www.hbdxs.com 2006-8-18 13:33:06 来源:网络收集 点击

  在调用服务器后要继续在服务器中保留数据通常很难,你可以用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:
  <sessionState
  mode="SQLServer"
  stateConnectionString="tcpip=127.0.0.1:42424"
  sqlConnectionString="data source=127.0.0.1;user id=username;password=password"
  cookieless="false"
  timeout="20" />
  
  注意,这些元素的名称和属性都要区分大小写。以下是该模式属性的各种可能值:
  
  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 进行开发,页面的格式就是下面这样的:
  <%@ Page Language="vb" %>
  
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  
  <html><head>
  
  <title>WebForm1</title></head><body>
  
  <script language="vb" runat="server">
  
  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
  
  </script></body></html>
  
  Here's the Page_Load event on the second form:
  
  <%@ Page Language="vb" %>
  
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  
  <html><head>
  
  <title>WebForm2</title></head><body>
  
  <script language="vb" runat="server">
  
  Private ReadOnly newLine As String = "<br>"
  
  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
  
  </script></body></html>
  
  关于卸载状态管理功能的一个注释:微软建议在执行卸载脚本以前先取消World Wide Web Publishing服务。你可以在命令行输入net stop w3svc命令来完成这一步。你可以用net start w3svc命令重启机器。
  
  你可以在SQL Server中检测tempdb数据库,这样你就可以毫不费力地看到会话管理属性是怎样运行的。它使用两个临时表格来进行会话管理:ASPStateTempApplications和 ASPStateTempSessions.
  
  一种可行的选择
  
  如果你担心会由于 Web服务器停止运行而失去会话状态数据的话,SQL Server是一种很好的选择。不过由于数据库的交互作用,它的性能也许会受些影响,但是它还是最值得的信赖的而又可行的方法。
服务器应用:用typsoft ftp建FTP站点2(图)…
SOHO族安全建议之保证上传服务器安全一
SOHO族安全建议之保证上传服务器安全二
怎样配置具有SSL保护的FTP服务器

  精彩推荐           [图话校园] [男生宿舍] [女生宿舍] [青春隐私] [帅哥靓妹]

高校代写论文成风 如何遏制研究生有

大二女生曝光激情照 称是美好回忆(…

劣质人造处女膜可致终身不育

教育部发布2008年第1号留学预警 慎

青春·校园

大二女生曝光激情照 称是美好回忆(图)…

为什么校园都是晃动的大腿 湖大男生抗议…

美女,你的裙子可以往下拽点吗?

校花干得土得掉渣的事
热门新闻
 “90后”富家女网上显摆私生活 零花钱成捆秀
 准大学生狂玩还是充电
 "全国校园新趋势" 美国大学流行男女同寝室
 高校代写论文成风 如何遏制研究生有偿论文现象?
 不属劳动法保护对象 大学生暑期打工遇维权真空
 2008省直事业单位招聘考试时间顺延至10月19日
 买一份盖好章的社会实践报告
 大学生假期求职应提防黑职介 职介需具备三证
 富翁校园征婚:炫富还是寻爱?
 宽容看待女大学生热衷嫁“豪门”
性教育
 不知和未来室友怎样相处 准大学生上网求良方
 性教育课小女生不敢提问的尴尬说明了什么?
 广州大学生性观念抽样调查出炉 近半不介意贞操
 早期性行为和缺乏性教育危及肯尼亚青少年
 成人漫画取材青春期性话题 读者青睐家长担忧
 高校开性健康课受学生欢迎 1小时名额即报满
 劣质人造处女膜可致终身不育
 为什么我觉得自己在公司是可有可无的?
 浙大“婚前守贞”培训全记录
 女大学生性教育读本疯传,校方在哪
关于本站 | 服务声明 | SITEMAP | 联系方式 | 广告服务 | 网站地图 | 友情链接 |
本站所刊资料部分为网上收集,如果确实侵犯了您的版权,请通知我们。
版权所有:河北大学生网 邮件:
备案编号:冀ICP备06003390
命运 天使 日不落 丁香花 拉拉爱 手机之家 自由飞翔 非主流音乐 做你的爱人 感动天感到地 最后一次的温柔 遇上你是我的缘 断点 下辈子不做女人 会有天使替我爱你
放生 彩虹 校园网 舍不得 不值得 你的承诺 老人与海 等爱的玫瑰 会呼吸的痛 玫瑰花的葬礼 怎么会狠心伤害我 听着情歌流眼泪 流行音乐 有没有人告诉你 歌曲 葬爱
白狐 光荣 摇啊摇 换换爱 坏女人 为你写诗 好听的歌 爱死了昨天 外滩十八号 北极星的眼泪 爱上你是我的错 不要在我寂寞的时候说爱我 迅雷影视 单身情歌 新不了情
红日 火花 有缘人 女人花 青花瓷 边做边爱 电子杂志 依然在一起 一定要爱你 对不起我爱你 我爱你你却爱着他 做我老婆好不好 左眼皮跳跳 大海 123木头人 天使的翅膀
承诺 左边 爱转角 大悲咒 小乌龟 擦肩而过 河北大学 爱在离别时 范跑跑之歌 我是真的爱你 找个好人就嫁了吧 爱情里没有谁对谁错 MP3 音乐在线 爱上你是一个错 星星