2009-03-31 9 views
2

Ein Buch zeigte ein Beispiel, in dem (bei Verwendung von IIS7) das folgende Modul so konfiguriert wurde, dass es von jeder Webanwendung (auch von nicht-ASP.net-Anwendungen) verwendet wurde, die auf einer Website ausgeführt wurde. Aber:HttpHandler-Instanz und HttpApplication-Objekt - tut letzteres ...?

  1. wenn dieses Modul für non-asp.net Anwendung aufgerufen wird, dann, wie oder warum sollte Httpapplication Objekt noch erstellt werden, da non-asp.net Apps nicht im Zusammenhang mit der CLR laufen (und somit wird auch die Asp.Net Runtime nicht ausgeführt)?

  2. Nimmt man HttpApplication Objekt auch für non-asp.net Anwendungen erstellt wird, warum dann wird der Code innerhalb Init() Ereignishandler haben zu prüfen, ob HttpApplication Objekt tatsächlich existiert? Warum würde es nicht existieren? Ist das nicht HttpApplication Objekt, das tatsächlich Http Modul Instanz instanziiert?

Hier ist Http-Handler:

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) 
    { ... } 
} 



Antwort

2

In IIS7 eine Anwendung im Pool App mit der integrierten Pipeline läuft, ist immer eine .NET-Anwendung. Der Code ist nur defensiv.