![]() |
Web Development »
ASP.NET »
Howto
Beginner
License: The Code Project Open License (CPOL)
Backup and Restore Session in .Net 2.0By Crooze21When you switch user or emulate the user this is very useful |
VB, .NET (.NET 2.0), ASP.NET, Dev
|
||||||||||
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
This code backup your session in byte stream. It is useful when you swith the user or emulate the user and need to clear the current session. you can store this byte stream in newly created session as a session veriable and it is so simple to retrive the old session data from that byte stream. This is very useful when you are using SQL memebership provider and maintaining signin and signout using cookies.
I hope you have some idea how session works so I am not going to put the code here to show you how to handle session.
This code got 2 methods onr is to backup the session and one is to restore the session. I think ou can use this two methods without any change in the code because it is very generic.
Blocks of code should be set as style "Formatted" like this:
Function BackupSession() As Byte()
Dim objSessionData As New SessionState.SessionStateItemCollection
Dim objStream As New System.IO.MemoryStream
Dim objWriter As New System.IO.BinaryWriter(objStream)
For i As Integer = 0 To Me.Session.Count - 1
objSessionData.Item(Me.Session.Keys(i)) = Me.Session.Item(i)
Next
objSessionData.Serialize(objWriter)
Return objStream.ToArray
End Function
Sub RestoreSession(ByVal prevSessionData As Byte())
Dim objStream As New System.IO.MemoryStream
Dim objRedaer As New System.IO.BinaryReader(objStream)
Dim objPrevSession As SessionState.SessionStateItemCollection
objStream.Write(prevSessionData, 0, prevSessionData.Length)
objStream.Seek(0, IO.SeekOrigin.Begin)
objPrevSession = SessionState.SessionStateItemCollection.Deserialize(objRedaer)
For Each key As String In objPrevSession.Keys
Me.Session(key) = objPrevSession.Item(key).ToString
Next
End Sub
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim prevSessionData As Byte()
prevSessionData = Me.BackupSession()
Me.Session.Clear()
'Signout and clear all the cookies of the user.
'Signin new user using new cookie and create new session.
Session("PrevSession") = prevSessionData
'Now when you swith user or cancel emulation, I mean go back to original user.
prevSessionData = nothing
prevSessionData = CType(Session("PrevSession"), Byte())
'Do signin and signout here then
Me.RestoreSession(prevSessionData)
End Sub
I spend more than 2 hours to find code to do this and then also I didn't find the exact same code that's why I just want to share this code with you, incase anybody need to do this kind of stuff. I need to do this because administrator need to emulate user all the time and when he cancel the emulation he lost all his information that's how I come with this solution.
| You must Sign In to use this message board. | |||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 25 Jan 2008 Editor: |
Copyright 2008 by Crooze21 Everything else Copyright © CodeProject, 1999-2009 Web10 | Advertise on the Code Project |