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
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.
Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"Moe Sisko" <null> wrote in message news:uawd2YQq...@TK2MSFTNGP02.phx.gbl...
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.
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.