session expiry when using sessionState mode="SQLServer"

M

Moe Sisko

Using dotnet 2.0 sp1,

I've got ASP.NET session state working ok in SQLServer mode, but the
sessions never seem to expire.

e.g if I add a timeout attribute like so :

<sessionState mode="SQLServer"
sqlConnectionString="Integrated Security=SSPI;data source=localhost"
timeout="1" >

the session doesn't seem to timeout. The timeout works fine in inProc
session mode.

Any ideas ?
TIA
 
J

Juan T. Llibre

re:
!> the session doesn't seem to timeout.
!> The timeout works fine in inProc session mode.

Session_End doesn't fire in SQL Server session state mode.

Unless you're running a multiple web server scenario ( web farm ),
when you need to keep track of user sessions in several servers,
don't use SQL Server *or* State Server to track session state
unless you're willing/able to take a performance hit.

The cost of serialization/deserialization affects performance.

In the case of State Server, the cost is about a 15% performance degradation.
In the case of SQL Server, the cost is about a 25% performance degradation.
 
M

Moe Sisko

Juan T. Llibre said:
re:
!> the session doesn't seem to timeout.
!> The timeout works fine in inProc session mode.

Session_End doesn't fire in SQL Server session state mode.

Juan,

Yes, I realise that Session_End doesn't fire in SQL Server state.

What I meant was, I was expecting the Session data to be automatically
cleared by SQL Server after the timeout minutes elapsed.
e.g. if I did : Session["abc"] = 5 , then after the timeout period
elapsed, I'm expecting : Session["abc"] to be null.

Otherwise the ASPStateTempSessions table in the session state database will
just keep growing. Old rows of this table doesn't seem to be getting cleaned
up.
 
M

Moe Sisko

Moe Sisko said:
What I meant was, I was expecting the Session data to be automatically
cleared by SQL Server after the timeout minutes elapsed.
e.g. if I did : Session["abc"] = 5 , then after the timeout period
elapsed, I'm expecting : Session["abc"] to be null.

Never mind, figured it out - SQL Server Agent needs to be running. It runs a
stored proc every minute which gets rid of expired session data.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,190
Members
46,736
Latest member
zacharyharris

Latest Threads

Top