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?
\+
?