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对象暴露(regasm.exe SessionUtility.dll /tlb:SessionUtility.tlb)。
9. 将SessionManager.dll复制到本地目录并使用regsvr32.exe注册(regsvr32 SessionManager.dll)。
10. 赋予IUSR_<计算机名>帐户读取和运行访问SessionMgr.dll的权限。
运行例程的步骤
上一页 [1] [2] [3] [4] [5] 下一页 |