Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / October 2007

Tip: Looking for answers? Try searching our database.

Capturing Session End...

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
David Lozzi - 01 Oct 2007 18:58 GMT
Howdy,

I'm trying to capture the session end event. I put a spot of code in the
Session_End event in the Global.asax.vb file. The function simply writes to
a database table logging the event. I have the same function in the
Session_Begin and the Application events. I am capturing the Session
beginning and the App begin and end but no Session end. My end goal is to
capture some session objects before it dies and log it.

Thanks,

David Lozzi
Mark Rae [MVP] - 01 Oct 2007 19:10 GMT
> I'm trying to capture the session end event. I put a spot of code in the
> Session_End event in the Global.asax.vb file. The function simply writes
> to a database table logging the event. I have the same function in the
> Session_Begin and the Application events. I am capturing the Session
> beginning and the App begin and end but no Session end. My end goal is to
> capture some session objects before it dies and log it.

1) What are you using for session management? If you're not using inproc
sessions, Session_End won't fire...

2) Are you certain there isn't an error in your Session_End code...?

3) Are you absolutely certain that Session_End isn't firing...? How are you
calling it? Obviously, Session_End doesn't fire when you close the client
browser - you have to make it happen manually, or let it happen
automatically when the session eventually times out...

Signature

Mark Rae
ASP.NET MVP
http://www.markrae.net

David Lozzi - 02 Oct 2007 15:34 GMT
Hi Mark,

1. Using SQL.
2. I am as sure as I can be. See script below
3. I'm assuming it will occur when it times out.

       Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
           ' Fires when the session ends
           common.SessionLog(3)
       End Sub

   Public Shared Function SessionLog(ByVal LogType As Integer)
       Dim ID As String = ""
       Dim Parts As String = ""
       Dim SessionID As String = ""
       Dim customer As String = ""
       Dim email As String = ""

       Dim uniSession As UniSession = Nothing
       Try
           Select Case LogType
               Case 1
                   ' Application Start
                   email = "admin"
                   ID = LogType & "_AppStart_" & IConvD2(Now) & "_" &
IConvMTS(Now) & "_" & CompanyCode
               Case 2
                   ' Session Start
                   SessionID = Current.Session.SessionID.ToString
                   ID = LogType & "_SessStart_" & SessionID & "_" &
IConvD2(Now) & "_" & IConvMTS(Now) & "_" & CompanyCode
               Case 3
                   ' Session End
                   SessionID = Current.Session.SessionID.ToString
                   customer = Current.Session("CustomerNum")
                   email = Current.Session("CustomerEmail")
                   Dim bag As ArrayList = Current.Session("ShoppingBag")
                   For Each i As BagItem In bag
                       Parts &= i.PartNo & "-" & i.Name & " :: "
                   Next
                   ID = LogType & "_SessEnd_" & SessionID & "_" &
IConvD2(Now) & "_" & IConvMTS(Now) & "_" & CompanyCode

               Case 4
                   ' Application End
                   email = "admin"
                   ID = LogType & "_AppEnd_" & IConvD2(Now) & "_" &
IConvMTS(Now) & "_" & CompanyCode
           End Select

           uniSession = UOOpenSession()

           Dim uf As UniFile = uniSession.CreateUniFile("BAG")
           With uf
               .RecordID = ID
               .WriteField(1, Now)
               .WriteField(2, Current.Session.SessionID)
               .WriteField(3, CompanyCode)
               .WriteField(4, Parts)
               .WriteField(5, Current.Session("CustomerEmail"))
               .WriteField(6, customer)
               .Close()
           End With
           Return True
       Catch ex As Exception
           UOCloseSession(uniSession)
           Dim msg As New MailMessage
           msg.From = New
MailAddress(ConfigurationManager.AppSettings("ErrorEmailFrom"))

           Dim toEmails() As String =
ConfigurationManager.AppSettings("ErrorEmailTo").Split(";")
           For i As Integer = 0 To toEmails.Length - 1
               msg.To.Add(toEmails(i))
           Next

           msg.Subject = "Error on " &
Current.Request.ServerVariables("SERVER_NAME") & " Website"
           msg.IsBodyHtml = True

           msg.Body = "<font face=verdana size='2'><b>Error on " &
Current.Request.ServerVariables("SERVER_NAME") & " Website!</b><br>" & Now()
& "<BR><br>" & _
                       "<b>Page Name:</b>common.vb<br>" & _
                       "<b>URL:</b>" &
Current.Request.ServerVariables("URL") & "<br>" & _
                       "<b>Function Name:</b> SessionLog<br><br>" & _
                       "<b>Error Message:</b> " & ex.ToString
           Dim smtpClient As New SmtpClient
           smtpClient.Host = ConfigurationManager.AppSettings("SMTPServer")
           smtpClient.Send(msg)
           Return False
       Finally
           UOCloseSession(uniSession)
       End Try

   End Function

>> I'm trying to capture the session end event. I put a spot of code in the
>> Session_End event in the Global.asax.vb file. The function simply writes
[quoted text clipped - 12 lines]
> client browser - you have to make it happen manually, or let it happen
> automatically when the session eventually times out...
Mark Rae [MVP] - 02 Oct 2007 15:49 GMT
>> 1) What are you using for session management? If you're not using inproc
>> sessions, Session_End won't fire...

> 1. Using SQL.

Don't need to look any further than that, then...

Session_End() only fires for inproc sessions...

This hasn't changed since the last time you asked... :-)
http://www.thescripts.com/forum/thread574994.html

Signature

Mark Rae
ASP.NET MVP
http://www.markrae.net

David Lozzi - 02 Oct 2007 16:35 GMT
D'OH --  I thought I asked this once before.... Well, then, this is
embarassing...

What are my options then? I need to capture an abandoned session's objects.
Also, how does a session never end when it's on SQL? Or does it and it
doesn't tell IIS/Web site about it?

Thanks,

>>> 1) What are you using for session management? If you're not using inproc
>>> sessions, Session_End won't fire...
[quoted text clipped - 7 lines]
> This hasn't changed since the last time you asked... :-)
> http://www.thescripts.com/forum/thread574994.html
Mark Rae [MVP] - 02 Oct 2007 16:43 GMT
> D'OH --  I thought I asked this once before.... Well, then, this is
> embarassing...

Happens to the best of us... :-)

> What are my options then? I need to capture an abandoned session's
> objects.

This may help:
http://www.velocityreviews.com/forums/t73124-sessionend-and-sqlserver-session-mo
de.html


> Also, how does a session never end when it's on SQL?

It does end.

> Or does it and it doesn't tell IIS/Web site about it?

Correct.

Signature

Mark Rae
ASP.NET MVP
http://www.markrae.net

Alexey Smirnov - 01 Oct 2007 19:38 GMT
> Howdy,
>
[quoted text clipped - 8 lines]
>
> David Lozzi

http://groups.google.com/group/microsoft.public.dotnet.framework.aspnet/search?g
roup=microsoft.public.dotnet.framework.aspnet&q=session_end

George Ter-Saakov - 01 Oct 2007 19:43 GMT
The difference between Sesssion_Begin and Session_End is that
Response/Request objects available in first event and null in another event.

so show us a code and do not say it's the same.....

George.

> Howdy,
>
[quoted text clipped - 8 lines]
>
> David Lozzi

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.