转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> Sql Server >> 正文
用SQL Server保持会话状态         

用SQL Server保持会话状态

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1007 更新时间:2007/11/14 13:13:27

  在调用服务器后要继续在服务器中保留数据通常很难,你可以用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:
    mode=SQLServer
  stateConnectionString=tcpip=127.0.0.142424
  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#例子包括了将一个含有会话变量的页面格式变成另一种可以显示值的页面格式:


Here's the second Web form:

如果你是用VB.NET 进行开发,页面的格式就是下面这样的:


Here's the Page_Load event on the second form:


  关于卸载状态管理功能的一个注释:微软建议在执行卸载脚本以前先取消World Wide Web Publishing服务。你可以在命令行输入net stop w3svc命令来完成这一步。你可以用net start w3svc命令重启机器。

  你可以在SQL Server中检测tempdb数据库,这样你就可以毫不费力地看到会话管理属性是怎样运行的。它使用两个临时表格来进行会话管理:ASPStateTempApplications和 ASPStateTempSessions.

  一种可行的选择

  如果你担心会由于 Web服务器停止运行而失去会话状态数据的话,SQL Server是一种很好的选择。不过由于数据库的交互作用,它的性能也许会受些影响,但是它还是最值得的信赖的而又可行的方法。


作者:Tony Patton    

 


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台