Hier ist mein HttpModule-Implementierung:
Datei mit Modul:
public class HttpModuleRewriter : IHttpModule
{
#region IHttpModule
public void Init(HttpApplication app)
{
app.BeginRequest += ProcessRequest;
}
public void Dispose()
{
}
#endregion
#region Protected Methods
protected void ProcessRequest(object sender, EventArgs e)
{
...
}
}
web.config:
Ich habe einen Breakpoint in der 'Init'-Methode der HttpModuleRewriter-Klasse gesetzt. Die Methode wird beim Start der Anwendung das erste Mal aufgerufen... und für jede Anfrage an Seiten wird das Modul nur einmal aufgerufen.
Wenn ich Anfragen an Seiten schnell durchführe (die zweite Anfrage erfolgt, bevor die erste Anfrage verarbeitet wird), wird die 'Init'-Methode zusätzlich einige Male aufgerufen und für jede folgende Anfrage an Seiten verursachen 2-3 Aufrufe meines Moduls...
Warum? Wie kann ich das vermeiden?
Danke.
P.S. Ich habe einen öffentlichen Konstruktor in HttpModuleRewriter hinzugefügt, um die Anzahl der Referenzen zu berechnen, und während meinen Anfragen wurden 5 Module erstellt... und für jede Anfrage an die Seite werden tatsächlich 2 Module aufgerufen... aber nur für die erste aufgerufene Seite, für alle folgenden Seiten (ich habe 3 weitere überprüft) werden die Module nur einmal aufgerufen (nur 1 Instanz wird aufgerufen)...
Warum wird die erste Seite zweimal verarbeitet? Die vorgeschlagene Antwort (die Verwendung der 'initialisierten' Flagge) hilft auch nicht.