W przypadku dowolnego adresu URL ze znakiem plus (+) w podstawowym adresie URL (nie w querystring), IIS7 i IIS7.5 (Windows Server 2008 i 2008 R2) nie wydają się przekazywać adresu URL do domyślnej procedury obsługi w aplikacji ASP.NET . Zacząłem zauważać problem z włączoną niestandardową obsługą HTTP, *.html
ale mam ten sam problem z *.aspx
. IIS6 (Server 2003) nie ma problemu z tymi samymi adresami URL.
Aby powtórzyć problem, w witrynie ASP.NET utworzyłem zestaw plików ASPX, które wykonały prosty Response.Write o różnych nazwach:
- test_something.aspx
- test_some + thing.aspx
- test_some thing.aspx
Trzeci plik był testem sprawdzającym, czy IIS7 [.5] traktuje symbole dodatnie jako spacje (tak jak w przypadku kwerendy); wydaje się, że tak nie jest. Gdy wszystkie te pliki są na swoim miejscu, uderzenie http://somehost/test_some+thing.aspx
lub http://somehost/test_some%2bthing.aspx
będzie działało poprawnie w IIS6, ale 404 w IIS7 / IIS7.5 przed przejściem do jakiegokolwiek programu obsługi ASP.NET. Czy w IIS7 / 7.5 jest jakaś konfiguracja, której brakuje, aby „zobaczyć” znak plus w adresie URL bez pominięcia końcowego rozszerzenia używanego do określenia procedury obsługi HTTP?
\+
?Odpowiedzi:
Po wyszukaniu większej liczby kombinacji IIS i plusa wydaje się, że IIS7 [.5] jest skonfigurowany tak, aby domyślnie odrzucał adresy URL ze znakiem plus z obawy przed użyciem tego znaku; ten symbol jest jednak nadal dozwolony w pytaniu. Rozwiązaniem jest zmiana domyślnego atrybutu requestFiltering na
<system><webServer><security><requestFiltering>
umożliwienie podwójnie kodowane znaki z połączenia linii poleceń (ostatecznie modyfikowania ASP.NET web.config):Może to być nieco bardziej niebezpieczne, niż ktoś woli być na swojej stronie internetowej, ale nie wydaje się, aby istniał sposób bardziej szczegółowy niż pozwala na to koc. Ostrzeżenia dotyczyły niedopasowania, które może wystąpić między użyciem plusa w adresie URL a jego typowym tłumaczeniem jako spacją. Wygląda na to, że jedyną alternatywą jest całkowite zaprzestanie używania znaków plus w adresach URL.
źródło
Właśnie wymyśliłem, jak stworzyć regułę przepisywania w celu przekonania IIS7 do mapowania plusów do spacji w adresach URL. W moim przypadku było to utrzymanie starszych zakładek lub hiperłączy.
Zobacz mój blog na dalsze szczegóły i referencje.
źródło