Eseguire codice ad ogni richiesta di pagina
di Maurizio Ferrera
Data di pubblicazione: 04/03/2004
Voto della community: 4,67
(Votanti: 1)
Spesso abbiamo l'esigenza di eseguire del codice ad ogni richiesta di una pagina della nostra applicazione. Potremmo voler ad esempio registrare gli accessi a tutte le pagine richieste a fini statistici oppure eseguire dei controlli prima che venga eseguito il codice delle nostre pagine aspx. ASP.NET crea automaticamente istanze della classe HttpApplication e le assegna alle varie richieste HTTP; ciascuna istanza espone diversi eventi durante l'intero ciclo di vita di una richiesta HTTP, nell'ordine: BeginRequest AuthenticateRequest AuthorizeRequest ResolveRequestCache AcquireRequestState PreRequestHandlerExecute PostRequestHandlerExecute ReleaseRequestState UpdateRequestCache EndRequest Rimandiamo alla documentazione per la descrizione di ognuno. Ci basti sapere che PreRequestHandlerExecute è l'ultimo evento prima che venga eseguito il codice di una pagina.aspx o di un webservice, etc, per la precisione prima che la richiesta venga intercettata dall'Handler HTTP appropriato per una certa estensione del file richiesto. Questi Eventi possono essere intercettati in Global.asax con la notazione:
Application_nomeEvento (appropriato EventArgument) ad esempio in Global.asax:
<script runat="server"> void Application_PreRequestHandlerExecute () { // fai qualcosa } </script> Supponiamo di voler verificare in tutte le nostre pagine che un utente si sia loggato e avvisare di conseguenza. Ci serviamo dell'ultimo evento (PreRequestHandlerExecute) prima che la pagina venga eseguita, per inserire il controllo:
<%@ Application language="C#" %> <script runat="server"> // Global.asax public void Application_PreRequestHandlerExecute (Object sender, EventArgs e) { if (Session["nominativo"]==null) Response.Write ("NON SEI LOGGATO"); else Response.Write ("Bentornato " + (string)Session["nominativo"]) ; } </script>
|
||||||||||||||||||||||||