ICANN认证国际域名顶级注册机构
网站建设,域名注册,空间租用,软件销售,广告设计 域名注册,空间租用, 网站建设,东莞网页设计,域名注册,网站推广,网站开发,网页设计 网站推广,,百度推广,新浪推广,雅虎推广,网易推广 标志设计,画册设计,包装设计,VI策划,企业形象顾问 连邦软件加盟店,提供销遥行,管家婆,速达,用友ERP,诺顿等软件报价及销售 建站必读 腾达网络,上网帮助中心, 腾达为东莞等地,提供网站建设,网站推广,广告设计,软件销售等优质服务!
建站必读


 
 
当前位置:首页 -> 建站必读 -> ASP技术
在ASP与ASP.NET之间共享对话状态(2)
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





  例程



  例程设计为增加并显示一个数字。不管载入了哪个页面,由于数字值保存在SQL Server中并在ASP和ASP.NET间共享,数字将不断增加。



  建立例程的步骤



  1. 建立一个新数据库SessionDemoDb。



  2. 建立新表SessState(osql.exe -E -d SessionDemoDb -i Session.sql)。



  3. 建立新虚拟目录Demo。



  4. 在ASP配置页中关闭ASP对话。



  5. 将web.config、testPage.aspx、Global.asa、testPage.asp和GlobalInclude.asp复制到虚拟目录。



  6. 更新Global.asa和web.config中的DSN字符串设置。对话超时设置是可选的,默认为20分钟。



  7. 将SessionUtility.dll安装到全局组件缓存(gacutil /i SessionUtility.dll)。



  8. 使用regasm.exe把SessionUtility.dll作为COM对O
 
 
本站关键词:
|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|
域名注册 | 虚拟主机 | 网站建设 | 网站推广 | 广告设计 | 帮助中心 | 软件中心 | 关于腾达
东莞市腾达信息工程有限公司      本站网络实名: 东莞网站建设
地址:东莞市新城市中心区第一国际B座610   邮编:523007
电话:0769-22026071 22026072 传真:0769-22026076 24小时服务热线:13712032014
© 2002~2005 腾达网络   版权所有