IIS 7.5, Mehrere Anwendungspools und URL-Umschreiben (403.18 - Verboten)

7

Gibt es eine Möglichkeit, IIS 7.5 so zu konfigurieren, dass URL-Umschreibungen in verschiedene Anwendungspools auf derselben Site durchgeführt werden, ohne dass ein 403.18-Fehler auftritt?

Wir verwenden Helicon ISAPI Rewrite 3 unter IIS 6 und es funktioniert wie ein Zauber. Die "Anwendung" auf Stammebene wird unter ihrem eigenen Anwendungspool ausgeführt, und unter IIS 6 haben wir keine Probleme, URL-Umschreibungen von diesem Anwendungspool in einen der anderen vier Anwendungspools durchzuführen. Wenn ich jedoch dieselben Serverkonfigurationsinformationen nach IIS 7.5 kopiere, schlägt das Umschreiben der URL in einen der anderen Anwendungspools mit dem Fehler "403.18 - Verboten" fehl.

Das Seltsame ist, dass IIS 6 nicht (zumindest soweit ich anhand des Konfigurationsdialogs für den Site-Service feststellen kann) im IIS 5-Emulationsmodus ausgeführt wird, sodass beim Umschreiben keine 403.18-Fehler auftreten. So etwas anders sein muss ... aber was immer es ist, ich habe sicher nicht in der Lage gewesen , um es herauszufinden.

Übrigens sind wir nicht mit Helicon ISAPI Rewrite verheiratet. Wenn es eine andere Möglichkeit gibt, unsere aktuellen Regeln zum Umschreiben mit einem anderen Modul oder einer anderen Methode beizubehalten, würde ich sie gerne verwenden.

Jerry Hewett
quelle

Antworten:

6

In IIS können Sie Anforderungen nicht einfach von einer Anwendung zu einer anderen weiterleiten. Anwendungen sind isoliert, daher wird der Fehler 403 angezeigt.

Sie können Anforderungen entweder mit ISAPI_Rewrite, Ape oder ARR proxyieren - dies spielt keine Rolle, da die Anforderung ohnehin über eine lokale HTTP-Anforderung an eine andere Anwendung weitergeleitet wird. Diese Lösung ist ziemlich stabil, aber Sie verlieren etwas an Leistung.

Eine Umleitung ist hier wahrscheinlich keine Option, da dadurch ohnehin zwei Anforderungen an den Server generiert werden. Da jedoch eine Anforderung vom Benutzer mit langsamer Verbindungsleistung generiert wird, kann die Leistung erheblich sinken.

Jaroslaw
quelle
1

Es wird in IIS7 auch nicht für die neue URL Rewrite-Komponente von Microsoft unterstützt. Das gleiche Problem tritt auf.

Ich erinnerte mich nicht daran, dass es in IIS6 möglich war, über App-Pools hinweg neu zu schreiben. Sie schreiben neu und nicht um? Eine Umleitung funktioniert in IIS7.

Ich würde Helicon unter www.isapirewrite.com fragen. Sie reagieren gut in ihren Foren. Möglicherweise befinden sich ISAPI-Module jetzt vollständig im Prozess w3wp.exe und können ihre Anforderung daher nicht an einen anderen App-Pool weitergeben.

Der andere Ort, an dem die Frage gestellt werden kann, ist http://forums.iis.net/ . Das IIS-Entwicklerteam antwortet auf einige der Beiträge und gibt möglicherweise Auskunft darüber, warum sich sogar die Funktionalität von ISAPI Rewrite beim Wechsel zu IIS7 geändert hat.

Scott Forsyth - MVP
quelle
1

In der Tat ist dies mit URL Rewrite nicht möglich. Wenn Sie dies jedoch wirklich tun möchten, können Sie ARR (Application Request Routing) in Verbindung verwenden, und es wird funktionieren. Beachten Sie jedoch, dass es tatsächlich eine vollständig neue Anforderung dafür ausführen würde. Mit anderen Worten, es fungiert als Proxy, der eine neue HTTP-Anforderung an sich selbst ausgibt. Dazu müssen Sie neu schreiben, um die vollständige URL einschließlich des Hostnamens und aller zu verwenden. Dies ist ein großer Aufwand, nur wenn dies für die Anwendung kritisch ist.

Wie bereits von Scott Forsyth erwähnt, besteht die andere Möglichkeit darin, eine Umleitung zu verwenden.

Carlos Aguilar Stuten
quelle
Sie beschreiben dies als "großen Aufwand". Was genau ist der Durchsatz oder die Ressourcenimplikation, die dieses Problem mithilfe von ARR löst?
Geoffrey McGrath
0

Wir haben auch ISAPI Rewrite 3 unter IIS6 verwendet, aber als wir auf IIS7.5 umgestiegen sind, haben wir auf Helicon APE umgestellt und es hat sogar noch besser funktioniert als Rewrite. Sie können die Daten in Ihrer Datenbank verwenden, um die URLs neu zu schreiben.

Kelton
quelle