Frage

Ich habe eine .net-Website, die enthält ein IHttpModule ich bestimmte Aufgaben (Berechtigung etc.) zu tun, schrieb. Aber innerhalb der Website gibt es eine Reihe von virtuellen Verzeichnissen, die auf Anwendungen von Drittanbietern zugeordnet werden, das leider kann ich nicht oder bewegen ändern (zum Beispiel Community-Server-Foren, adxstudio cms und andere).

Ich bin auf der Suche nach einer Möglichkeit, meine IHttpModule zu verhindern, läuft, wenn Anfragen für den Inhalt dieser virtuellen Verzeichnisse vorgenommen werden. Ist das möglich?

[Bearbeiten - addierten die folgenden]

Ich habe mit dem Hinzufügen von <remove name="X"/> innerhalb des <httpModules> Knoten in den Web.config-Dateien in den virtuellen Verzeichnis-Anwendungen experimentiert, aber es scheint nicht ausarbeitet zu werden. Es ist wahrscheinlich nicht eine große Lösung, entweder weil die Anwendungen von Drittanbietern so aktualisiert werden können, will ich keine Änderungen an ihren Code / Konfiguration erforderlich ist.

Ich habe versucht, auch das Hinzufügen einer <location path="." inheritInChildApplications="false"> um meinen <system.web> Knoten in der übergeordneten Web.config aber auch scheinen nicht zu funktionieren.

[Bearbeiten wieder - hinzugefügt mehr]

Der Grund ist nicht funktioniert, ist, weil der Init-Ereignis des IHttpModule wird nur einmal abgefeuert pro Anwendungs-Lebenszyklus (anstelle von pro Anfrage, wie ich angenommen hatte). Da ich eine Reihe von Event-Listener in dem Init-Ereignisse hinzufügen, diese noch auf nachfolgende Anfragen ausgelöst werden ...

War es hilfreich?

Lösung

Wenn Sie eine Liste dieser Verzeichnisse und ihre virtuellen Pfade haben, können Sie eine Suche nach ihnen bauen.

Für jedes Httprequest, die Ihr Modul löst, können Sie für den virtuellen Pfad überprüfen, um zu sehen, ob es zu einem Pfad in dem Look-up gehört. Wenn ja, dann können Sie nichts tun oder Ihren Moduls Code beenden.

PS: Für Leistungsproblem, mögen Sie wahrscheinlich die Suche in dem Anwendungszustand speichern (z hashmap usw.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top