2009-06-25 11 views
6

Sto chiedendo questa domanda per curiosità.Perché l'evento Session_End non viene generato quando StateProvider non è InProc?

ho notato questo nel mio global.asax

void Session_End(object sender, EventArgs e) 
{ 
    // Code that runs when a session ends. 
    // Note: The Session_End event is raised only when the sessionstate mode 
    // is set to InProc in the Web.config file. If session mode is set to StateServer 
    // or SQLServer, the event is not raised. 
} 

voglio capire perché evento Session_End non viene catturata/sollevata quando la modalità di sessione è StateServer o SQLServer?

risposta

10

perché il ASP.NET Session State non è in memoria più ...

quando si utilizza un processo diverso per memorizzare lo stato di sessione, il IIS non conosce (perché non è accoppiato, lo stato della sessione non è tenuto da IIS più) quando la sessione finisce ...

questo è specialmente perché i timeout, non ho mai provato, ma quell'evento si attiva quando si chiama programmaticamente Session.Abandon() ??

3

L'evento Session_End è suported solo dal gestore InProc sessione:

ASP.NET Session-State Events (MSDN)

"L'evento Session_OnEnd è supportata solo quando lo stato di sessione in modalità proprietà è impostata su InProc, che è Se lo stato di sessione Modalità è StateServer o SQLServer, l'evento Session_OnEnd nel file Global.asax viene ignorato. f lo stato di sessione La modalità è impostata su Personalizzata, quindi il supporto per l'evento Session_OnEnd è determinato dal provider di negozio personalizzato dello stato di sessione . "

questo articolo viene spiegato come utilizzare un HttpModule per emulare questa funzionalità:

ASP.NET HttpModule for handling session end with StateServer (CodeProject)

+0

che dire quando la modalità stato sessione è impostato su Personalizzato? –

+0

@ Sana.91 - probabilmente no, a meno che non si scriva il gestore del cliente per sollevare quell'evento. – Kev

+0

@ Anti-Santa Come posso farlo? ... ho cercato e non sembra esserci soluzione .. –

Problemi correlati