Solved

Session_Start firing upon every request

Posted on 2011-03-01
7
2,016 Views
Last Modified: 2012-05-11
Session_Start is firing upon every request in an asp.net Application after calling Session.Abandon() and FormsAuthentication.SignOut().

I have attached sample code that shows the behavior I am seeing. Follow the steps below with the sample code.
1: Set breakpoints on Session_Start and Session_End method in global.asax
2: Login into the website
3: Use links provided to navigate between two pages(Home and Page2).
4: Click Logout but don't close the browser
5: Repeat step 2-3

After second login you will see Session_Start and Session_End is called upon every page request i.e. when you navigate between home and page2. The most important thing is Session_End is called immediately after Session_Start before the page is shown.

Points to note:
1: I am doing manual logout in the logout.aspx.cs by calling FormsAuthentication.Signout() and also calling Session.Abandon.
2: If I comment out the Session.Abandon() in the logout.aspx.cs page, it works fine and Session_Start doesn't fire upon every request.
3: I have tried IE and FF.

There is something really small concept I am missing about Session here. Anyone has any ideas?

PS: I wasn't able to upload .asax file but here is the content of global.asax.

 login.zip
<%@ Application Language="C#" %>

<script runat="server">
    void Session_Start(object sender, EventArgs e) 
    {
        //set breakpoint
    }
    void Session_End(object sender, EventArgs e) 
    {
        //set breakpoint
    }
       
</script>

Open in new window

0
Comment
Question by:guru_sami
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
7 Comments
 
LVL 41

Accepted Solution

by:
guru_sami earned 0 total points
ID: 35010644
The answer provided here by Alex B seems to be solving the problem.

But I am wondering why is this happening? My understanding is since the browser is not closed the same SessionID is used and that is something causing such recursive behavior.
0
 
LVL 16

Assisted Solution

by:Stephan
Stephan earned 100 total points
ID: 35014843
When you are setting the session.abandon, you will loose your sessionID, on every page request there will be a new sessionID untill you set a session that references to this sessionID.

I got this question myself a few weeks ago that from .net 2.0 always recreate a sessionID untill there is a session to maintain.

So in your case the following happens:

1. login, nothing is wrong
2. logout, session is abandoned
3. page_request, sessionid created (e.g. session_start)
4. page_unload, sessionid is lost (e.g. session_end)

step 3 and 4 will always be done untill a new session is set.

If there are any questions, I'd love to hear.
0
 
LVL 15

Expert Comment

by:crisco96
ID: 35016236
If you want the user to keep using the same session ID use Session.Clear() instead of Session.Abandon()
0
PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

 
LVL 41

Author Comment

by:guru_sami
ID: 35018514
@Stephan,
The SessionID is remaining the same and that's because I am not closing the browser. And it remains the same even after setting some dummy session. SessionID changes only with new browser.

@crisco96,
No, it's not I want to reuse the SessionID because it always remains the same with or without Session.Abandon.

In general what I am looking for is what is causing this?
1: Setting a dummy session in Session_Start makes it work so what does it do?
2: It works fine if I change the framework to 4.0. So what change in 4.0 makes it work?
0
 
LVL 16

Expert Comment

by:Stephan
ID: 35018602
0
 
LVL 41

Author Comment

by:guru_sami
ID: 35018955
"..a new session ID is generated for each page request until the session object is accessed."

Yes, I see that but once you start using the session or even if you just define an empty Session_Start block in your Global.asax, the SessionID becomes constant.
You can try in by simply outputting SessionID in the default.aspx and Page2.aspx in the sample code I provided.
0
 
LVL 41

Author Closing Comment

by:guru_sami
ID: 35414386
Didn't get accurate answer.
0

Featured Post

MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article discusses the ASP.NET AJAX ModalPopupExtender control. In this article we will show how to use the ModalPopupExtender control, how to display/show/call the ASP.NET AJAX ModalPopupExtender control from javascript, how to show/display/cal…
I recently went through the process of creating a Calendar Control of events with the basis of using a database to keep track of the dates that are selectable, one requirement was to have the selected date pop-up in a simple lightbox.  At first this…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
Suggested Courses

623 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question