网络编程
位置:首页>> 网络编程>> Asp编程>> 在ASP与ASP.NET之间共享对话状态(2)

在ASP与ASP.NET之间共享对话状态(2)

  发布时间:2008-09-02 12:21:00 

标签:ASP.NET,SQL,Server,函数

在ASP与ASP.NET之间共享对话状态(1)

ASP实现

原来的ASP对话只能将对话数据保存在内存中。为了将对话数据保存到SQL Server,需要写一个自定义的Visual Basic 6.0 COM对象代替现在的对话对象来管理对话状态。该COM对象在每个Web请求开始时被初始化,并从SQL Server重新载入对话数据。ASP脚本完成时,该对象将终止并把对话状态将返回到SQL Server。

Visual Basic 6 COM Session对象的主要目的是提供对微软Internet信息服务器(IIS)内部对象的访问。Visual Basic 6 COM对话对象使用SessionUtility组件的mySession类来保存对话状态,SessionUtility的SessionPersistence类用于载入和保存对话数据到SQL Server。使用regasm.exe工具将mySession和 SessionPersistence类作为COM对象暴露。regasm.exe工具可以注册并为COM客户端建立一个类型库来使用框架组件类。
  在对象的构造函数中状态信息被重新载入。构造函数(class_initialize)首先从Application对象中检索对话cookie、对话超时设置(SessionTimeOut)、数据库连接字符串(SessionDSN),并建立mySession类的一个实例来保持对话数据。接着构造函数将试图重新使用给定的cookie从SQL Server中载入对话数据。如果SQL Server中没有对话信息,或者对话已经终止,将产生一个新的cookie。如果SQL Server返回了对话状态数据,对话状态信息将保存在mySession对象中。

Private Sub Class_Initialize() 
 On Error GoTo ErrHandler: 
 Const METHOD_NAME As String = "Class_Initialize" 
 Set mySessionPersistence = New SessionPersistence 
 Set myObjectContext = GetObjectContext() 
 mySessionID = ReadSessionID() 
 myDSNString = GetConnectionDSN() 
 myTimeOut = GetSessionTimeOut() 
 myIsNewSession = False 
 Call InitContents 
 Exit Sub 
ErrHandler: 
 Err.Raise Err.Number, METHOD_NAME & ":" & Err.Source, Err.Description 
End Sub 
Private Sub InitContents() 
 On Error GoTo ErrHandler: 
 Const METHOD_NAME As String = "InitContents" 
 If mySessionID = "" Then 
  Set myContentsEntity = New mySession 
  mySessionID = mySessionPersistence.GenerateKey 
  myIsNewSession = True 
 Else 
  Set myContentsEntity =mySessionPersistence.LoadSession(mySessionID, myDSNString,   myTimeOut) 
End If 
 Exit Sub 
ErrHandler: 
 Err.Raise Err.Number, METHOD_NAME & ":" & Err.Source, Err.Description 
End Sub 

如果对象实例超出了脚本的范围,将执行解构函数(class_terminate)。解构函数将使用SessionPersistence.SaveSession()方法保持对话数据。如果是一个新对话,解构函数将新cookie发送回浏览器。

Private Sub Class_Terminate() 
 On Error GoTo ErrHandler: 
 Const METHOD_NAME As String = "Class_Terminate" 
 Call SetDataForSessionID 
 Exit Sub 
ErrHandler: 
 Err.Raise Err.Number, METHOD_NAME & ":" & Err.Source, Err.Description 
End Sub 
Private Sub SetDataForSessionID() 
 On Error GoTo ErrHandler: 
 Const METHOD_NAME As String = "SetDataForSessionID" 
     Call mySessionPersistence.SaveSession(mySessionID, 
     myDSNString, myContentsEntity, myIsNewSession) 
 If myIsNewSession Then Call WriteSessionID(mySessionID) 
 Set myContentsEntity = Nothing 
 Set myObjectContext = Nothing 
 Set mySessionPersistence = Nothing 
 Exit Sub 
ErrHandler: 
 Err.Raise Err.Number, METHOD_NAME & ":" & Err.Source, Err.Description 
End Sub 

0
投稿

猜你喜欢

  • 分区表的概念 分区致力于解决支持极大表和索引的关键问题。它采用他们分解成较小和易于管理的称为分区的片(piece)的方法。一旦分区被定义,S
  • 内容摘要:当我们不想让某IP服务我们的网站时,我们就要写段程序来限制IP地址。asp中如何对ip进行过滤限制?本文介绍了一种方法,这个函数只
  • 块级元素块级元素生成一个元素框,(默认地)它会填充其父级元素的内容,旁边不能有其他元素。换句话说,他在元素框之前和之后生成了“分隔”符。我们
  • 前段时间冷空气突袭的时候,据说郊区密云的雪积得挺厚,但北京城内除了飘了一点小雪粒,毫无动静。应该是气温过高所致,我在慈云寺桥附近拍下的照片可
  • 最近,在搞这个东西,网上也找不到asp相关的,如果有人很早弄出来了,也不要笑话偶;费了好久,总算搞定;原理:用stream对象预读文件的头两
  • 最近重新温习了一次《javascript设计模式》,确实是一本好书,每次看都有不同的领悟,每次领悟到的都受益匪浅,无怪古圣人都说学无止镜了,
  • 在使用AJAX开发网站时,经常有朋友遇到乱码的问题,而且一下子难以找到解决方法。其实解决AJAX中文乱码问题很简单。1、服务端程序:<
  • MySQL中模式就是数据库SHOW DATABASES;show databases;罗列所有数据库名称CREATE DATABASE &l
  • 关于asp缓存函数,类什么的,在网上可以说笔笔皆是,为啥我要不辞辛苦去写一个呢?大概看了下,各有各的优点吧,可是大部分好像不可以缓存数据额,
  • 1、卓越亚马逊的首页轮换图片,每刷新一次,都是随机不同的顺序显示,这样的设计解决了对于较多图片轮换而靠后的图片信息很少被看到的问题,这点对于
  • 我们一般采用photoshop等做图工具制作电视扫描线效果图片:首先做一个黑白相间的图案,然后用这个图案进行填充,再调整图层的模式或者透明度
  • 引伸阅读解读absolute与relativeposition:relative/absolute无法冲破的等级定位一直是WEB标准应用中的
  • 几个常用的js小函数,在表单验证时也许您用得到:一检查是否是email地址,二检查是否为数字,三检查是否为电话号码,四检查num是否是负数或
  • 将纸的材质融为设计元素现已成为当今网页设计最热门最流行的设计趋势之一。网页设计师可以使用纸屑、硬纸板纹理材质、笔记本和记事薄构成有趣而复杂的
  • 用HZHOST实用工具集的服务器安全设置里安装了MSSQL安全配置,现在SQL2000还原不了数据库了,从还原选定设备浏览文件夹时出现&qu
  • 前面的文章,主要讲到如何使用无序列表ul元素来实现复杂柱状图,但是在Web标准中,除了注重表现外,更加注重语意,所谓的语意就是样式和内容的相
  • CSS网页布局开发中,会有很多小技巧,这里再扩展一下您所想要得到的知识,相信您会有很多收获!一、ul标签在Mozilla中默认是有paddi
  • 二、XML的定义 XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中。XML保留了SGML的可扩展功能
  • 现在大家都在讨论Web2.0 ,大家都在搞用户行为前端设计,现在注册一个ID一般只需要几秒钟,站长期望其产生高价值的UGC,形成一个只需要审
  • date() 获取日期,格式:2004-2-28 time() 获取时间,格式:22:24:59 now() 获取日期和时间 格式: 200
手机版 网络编程 asp之家 www.aspxhome.com