2009-03-31 5 views
2

Un livre a montré un exemple où (en utilisant IIS7) le module suivant a été configuré de telle sorte qu'il serait utilisé par n'importe quelle application web (même par des applications non asp.net) fonctionnant sur un site web. Mais:Instance HttpHandler et objet HttpApplication - ce dernier ...?

  1. si ce module est invoqué pour l'application non-asp.net, alors comment ou pourquoi serait HttpApplication objet encore être créé, car les applications ne fonctionnent pas non ASP.NET dans le contexte du CLR (et donc runtime Asp.Net ne fonctionnera pas non plus)?

  2. objet est HttpApplication En supposant également créé pour les applications non ASP.NET, pourquoi alors le code à l'intérieur du gestionnaire d'événements Init() doivent vérifier si HttpApplication objet existe réellement? Pourquoi cela n'existerait-il pas? N'est-ce pas cet objet HttpApplication qui instancie réellement l'instance du module Http?

Voici gestionnaire Http:

public class SimpleSqlLogging : IHttpModule 
{ 
    private HttpApplication _CurrentApplication; 

    public void Dispose() 
    { 
     _CurrentApplication = null; 
    } 

    public void Init(HttpApplication context) 
    { 
     // Attach to the incoming request event 
     _CurrentApplication = context; 

     if (context != null) 
     { 
      context.BeginRequest += new EventHandler(context_BeginRequest); 
     } 
    } 

    void context_BeginRequest(object sender, EventArgs e) 
    { ... } 
} 



Répondre

2

Dans IIS7 une application dans le pool d'applications en cours d'exécution avec le pipeline intégré est toujours une application .NET. Le code est juste défensif.

Questions connexes