2009-01-29 8 views
4

Comment puis-je convertir:En utilisant HttpModule au lieu de Global.asax

<%@ Application Language="C#" %> 

<script runat="server"> 

    void Session_Start(object sender, EventArgs e) 
    { 


    } 

</script> 

à un régime qui utilise HttpModule?

En outre, puis-je écrire Global.asax en tant que C# pur au lieu d'utiliser des balises?

Répondre

5

À l'initialisation de votre module personnalisé, vous devez extraire le module Session et ajouter un gestionnaire d'événements pour l'événement Start.

public void Init(HttpApplication context) 
{ 
    context.BeginRequest += new EventHandler(Begin_Request); 
    IHttpModule sessionModule = context.Modules["Session"]; 
    if(sessionModule != null && 
     sessionModule.GetType() == typeof(System.Web.SessionState.SessionStateModule)) 
    { 
     (sessionModule as System.Web.SessionState.SessionStateModule).Start 
      += new EventHandler(CustomHttpModule_Start); 
    } 
} 

, puis-je écrire aussi le Global.asax aspure C# au lieu d'utiliser des étiquettes?

Oui, vous pouvez ajouter un code derrière dans le dans le Global.asax et modifier le contenu de

<%@ Application Language="C#" CodeBehind="Global.asax.cs" Inherits="Global" %> 

Votre code devrait hériter de derrière System.Web.HttpApplication

public class Global : System.Web.HttpApplication 
{ 
    public Global() { } 

    void Session_Start(object sender, EventArgs e) 
    { 
     // Code that runs when a new session is started 
    } 
} 
Questions connexes