Bei URLs mit einem Pluszeichen (+) in der Basis-URL (nicht im Querystring) wird die URL von IIS7 und IIS7.5 (Windows Server 2008 und 2008 R2) scheinbar nicht an den Standardhandler einer ASP.NET-Anwendung weitergeleitet . Ich bemerkte das Problem mit einem benutzerdefinierten HTTP-Handler, *.html
aber ich habe das gleiche Problem mit *.aspx
. IIS6 (Server 2003) hat kein Problem mit denselben URLs.
Um das Problem zu replizieren, habe ich auf einer ASP.NET-Site eine Reihe von ASPX-Dateien erstellt, die eine einfache Response.Write mit verschiedenen Namen ausführten:
- test_something.aspx
- test_some + thing.aspx
- test_some thing.aspx
Die dritte Datei war ein Test, um festzustellen, ob IIS7 [.5] Pluszeichen als Leerzeichen behandelt (wie im Querystring). dies scheint nicht der Fall zu sein. Mit all diesen Dateien an Ort und Stelle, Schlagen http://somehost/test_some+thing.aspx
oder http://somehost/test_some%2bthing.aspx
wird gut in IIS6 arbeiten , aber 404 in IIS7 / IIS7.5 vor einem ASP.NET - Handler zu bekommen. Gibt es eine Konfiguration in IIS7 / 7.5, die ich vermisse, um ein Pluszeichen in der URL zu "sehen", ohne die letzte Erweiterung zu verpassen, die zum Bestimmen eines HTTP-Handlers verwendet wird?
\+
?Antworten:
Nach der Suche nach weiteren Kombinationen von IIS und Plus scheint IIS7 [.5] so eingerichtet zu sein, dass URLs mit einem Pluszeichen standardmäßig abgelehnt werden, da die Verwendung dieses Zeichens befürchtet wird. Dieses Symbol ist im Querystring jedoch weiterhin zulässig. Die Lösung besteht darin, die Standardeinstellung für das requestFiltering-Attribut so zu ändern
<system><webServer><security><requestFiltering>
, dass doppelt codierte Zeichen mit einem Befehlszeilenaufruf zulässig sind (wodurch letztendlich Ihre ASP.NET-Datei web.config geändert wird):Dies mag ein bisschen gefährlicher sein, als man es von ihrer Website gewohnt ist, aber es schien keinen Weg zu geben, spezifischer zu sein als es eine Decke erlaubt. Die Warnungen betrafen die Nichtübereinstimmung, die zwischen der Verwendung eines Pluszeichens in einer URL und der typischen Übersetzung als Leerzeichen auftreten kann. Es sieht so aus, als ob die einzige Alternative darin besteht, die Verwendung von Pluszeichen in Ihren URLs zu beenden.
quelle
Ich habe gerade herausgefunden, wie man eine Regel zum Umschreiben erstellt, um IIS7 davon zu überzeugen, Pluspunkte Leerzeichen in URLs zuzuordnen. In meinem Fall sollten ältere Lesezeichen oder Hyperlinks weiterhin funktionieren.
Weitere Details und Referenzen finden Sie in meinem Blogbeitrag .
quelle