2009-08-25 9 views
1

Wir haben ein HTTPModule, dessen einziger Zweck es ist, "url rewriting" zu tun. Nach der Definition eines HTTP-Moduls durchlaufen ALLE Browseranforderungen (HTML, CSS, JavaScript, Bilder usw.) die Ereignisbehandlungsroutinen dieser Klasse.Profile_OnMigrateAnonymous Ereignis mehrere Male feuern

Während des Anmeldevorgangs fangen wir den Moment ein, wenn der Benutzer im Ereignisprozedur "Profile_OnMigrateAnonymous" von Global.asax vom "anonymen" zum "angemeldeten" Benutzer wechselt. Ein Problem, das wir finden, ist, dass, wenn sich der Benutzer anmeldet, das Profile_OnMigrateAnonymous-Ereignis anscheinend für JEDE Ressource in der Anforderung ausgelöst wird, um die Seite für den Benutzer zu generieren - nämlich HTML, CSS, Javascript, Bilder usw. war mir bewusst, dass dieses Ereignis nur einmal ausgelöst wird. Warum würde es mehrmals feuern? Ist es ein Ergebnis unseres registrierten "URL Rewriting" HTTPModules? Gibt es eine Möglichkeit, die Anwendung so zu konfigurieren, dass das Ereignis nur einmal ausgelöst wird?

Antwort

1

Für normale Ressourcenanforderungen (css/js/img etc) behandelt IIS die Anfrage direkt. Es übergibt nur an die Asp_net-Worker-Anforderungen für bestimmte Dateinamen (wie .aspx und .asmx).

Ihr HTTPModul zwingt IIS im Grunde, alle Anforderungen an den Arbeitsprozess weiterzuleiten, daher löst jede Anforderung das Profil OnMigrateAnonymous aus.

Ich glaube nicht, dass Sie den Aufruf von Profile_OnMigrateAnonymous umgehen können, jedoch könnten Sie ein wenig Code implementieren, um nach einem ASPX/.ascx-Dateinamen zu suchen und erst dann die angegebenen Aktionen auszuführen.