Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Durante il funzionamento dell'applicazione, ASP.NET consente di mantenere un pool di istanze HttpApplication derivate dal file Global.asax. Quando l'applicazione riceve una richiesta HTTP, il framework della pagina ASP.NET assegna una delle istanze per l'elaborazione della richiesta. La particolare istanza HttpApplication è responsabile di tutta la gestione della richiesta a cui è assegnata e può essere riutilizzata solo dopo che la richiesta è stata completata.
Tramite la classe HttpApplication è possibile accedere a livello di programmazione ai metodi HttpApplication.Init e HttpApplication.Dispose, nonché agli eventi Application_OnStart e Application_OnEnd. È inoltre possibile accedere a qualsiasi evento esposto dagli HttpModule.
Override dei metodi Init e Dispose
Il metodo HttpApplication.Init viene richiamato immediatamente dopo la creazione di un'istanza della classe HttpApplication. È possibile utilizzare questo metodo per creare e configurare un oggetto da utilizzare per la gestione degli eventi, come mostrato nell'esempio che segue.
<script language="VB" runat="server">
Public Overrides Sub Init()
'Insert something interesting here.
End Sub
</script>
[C#]
<script language="C#" runat="server">
public override void Init() {
// Insert something interesting here.
}
</script>
Il metodo Init si differenzia dall'evento Application_OnStart in quanto viene sempre richiamato su tutte le istanze di HttpApplication all'interno di un'applicazione. L'evento Application_OnStart viene generato una sola volta durante il funzionamento dell'applicazione, nella prima istanza di HttpApplication. Utilizzare Application_OnStart solo per creare o modificare stati condivisi da tutte le istanze di pipeline, ad esempio l'utilizzo dell'oggetto ApplicationState. Non utilizzare l'evento per creare variabili locali, in quanto le variabili locali non sono condivise da più istanze di HttpApplication. Il metodo HttpApplication.Dispose deve essere richiamato immediatamente prima di eliminare un'istanza della classe HttpApplication. È possibile utilizzarlo per eseguire la pulitura delle risorse locali.
Il metodo Dispose si differenzia dall'evento Application_OnEnd in quanto viene sempre richiamato su tutte le istanze di HttpApplication all'interno di un'applicazione. L'evento Application_OnEnd viene generato una sola volta durante il funzionamento dell'applicazione, quando viene eliminata l'ultima istanza di HttpApplication. Utilizzare Application_OnEnd solo per eseguire la pulitura di stati o risorse condivisi da tutte le istanze di pipeline, ad esempio l'utilizzo dell'oggetto ApplicationState. Non utilizzare questo evento per eseguire la pulitura delle variabili locali, in quanto tali variabili non sono condivise da più istanze di HttpApplication.
Non è possibile utilizzare le proprietà Request, Response e Session di un'istanza HttpApplication durante la fase Init o Dispose dell'esecuzione della richiesta.
Nell'esempio che segue viene descritto come eseguire l'override dei due metodi utilizzati per tutta la durata dell'applicazione e forniti dalla classe base HttpApplication.
<script language="VB" runat=server>
Public Overrides Sub Init()
' Init override code goes here.
End Sub
Public Overrides Sub Dispose()
' Init override code goes here.
End Sub
</script>
[C#]
<script language="C#" runat=server>
public override void Init() {
// Init override code goes here.
}
public override void Dispose() {
// Init override code goes here.
}
</script>
Gestione di eventi HttpApplication
È possibile utilizzare il file Global.asax per sincronizzare qualsiasi evento esposto dalla classe base HttpApplication. A tale scopo, per la modifica dei metodi è necessario utilizzare i seguenti criteri di denominazione:
Application_EventName(AppropriateEventArgumentSignature)
Se è necessario, ad esempio, rispondere agli eventi OnStart, BeginRequest e OnEnd dell'applicazione, il codice incluso nel file Global.asax può essere quello riportato di seguito.
<Script language="VB" runat="server">
Sub Application_OnStart()
'Application start-up code goes here.
End Sub
Sub Application_BeginRequest()
'Application code for each request could go here.
End Sub
Sub Application_OnEnd()
'Application clean-up code goes here.
End Sub
</script>
[C#]
<Script language="C#" runat="server">
public void Application_OnStart() {
// Application start-up code goes here.
}
public void Application_BeginRequest() {
// Application code for each request could go here.
}
public void Application_OnEnd() {
// Application clean-up code goes here.
}
</script>
Vedere anche
File Global.asax | Classe HttpApplication | HttpApplication.Init | HttpApplication.Dispose