2009-11-10 14 views
7

La mia domanda è essenzialmente la stessa della domanda 765054 su StackOverflow. Lo sto solo chiedendo nuovamente perché la risposta accettata non è corretta (non è possibile accedere all'oggetto sessione in Application_BeginRequest).Quando è possibile, posso accedere alla SESSIONE nel ciclo di vita della pagina ASP.NET MVC?

Il nostro caso d'uso è che vogliamo archiviare l'oggetto utente dell'utente autenticato nella sessione. Pertanto, nelle richieste successive, è possibile impostare correttamente IPrincipal e IIdentity in base all'oggetto utente nella sessione.

+0

Interessante, devo dire, merita una seconda occhiata. –

risposta

3

Faccio cose simili usando un controller di base e sovrascrivendo OnActionExecuting. Non so se questo è il primo a poter essere fatto o meno, non lo so, ma so che succederà prima che la tua azione sia eseguita (e quindi prima che la vista sia resa). In alternativa potresti voler avere un attributo di autorizzazione personalizzato che faccia ciò che vuoi. Questo potrebbe essere l'unico modo per assicurarsi che sia fatto prima che altri attributi siano in esecuzione.

+0

Ha appena implementato l'override di OnActionExecuting e ha funzionato come un incantesimo. OnActionExecuting viene chiamato prima del filtro di autorizzazione, quindi questa soluzione funzionerà per noi. – Jason

4

Apparentemente AcquireRequestState è il primo evento in cui HttpContext.Current.Session non è nullo. Ho appena allegato a tutti loro in sequenza e testato. Preferisco utilizzare PreRequestHandlerExecute che si verifica prima che venga chiamato il costruttore sul mio controller.

Questo è rilevante se si preferisce avere il proprio codice in o referenziato dal Global.asax. Vedi questa pagina per la lista sequenziale degli eventi nel ciclo di vita dell'applicazione: http://msdn.microsoft.com/en-us/library/ms178473%28v=vs.100%29.aspx

Problemi correlati