2015-02-23 10 views
5

Mam stronę asp.net-mvc i mam przypadek, w którym mam bardzo długi znak zapytania w adresie URL. Ten wcześniej nie był problem, ale ja nagle otrzymuję ten błąd w kilku przypadkach:W asp.net-mvc, czy querystring zbyt długi wynik w 404 Nie znaleziono błędu pliku?

enter image description here 404-File lub dyrektor nie znaleziono - zasób szukasz, mogła zostać usunięta, zmieniono jej nazwę lub jest chwilowo niedostępny.

Nie udowodniłem, że jest to spowodowane długością adresu URL, ale powód, dla którego zakładam, że jest to związane z długością zapytania, polega na tym, że jeśli wybrałem usunięcie pewnych części ciągu zapytania, to działa dobrze i przeszedłem każda sekcja (aby zidentyfikować część ciągu zapytania jest "uszkodzony"

Jestem w stanie odtworzyć ten błąd w moim przykładzie, który ma całkowitą długość url 2805 znaków. Czy to jest oczekiwane? Widzę problem w obu Firefox i Internet Explorer:

Powód, dla którego pytam, to to, że z mojego wyszukiwania google wygląda na to, że IIS zgłasza inny błąd, gdy zapytanie jest zbyt długie (błąd 415 lub 414: as described here)

Czy jest to ustawienie po stronie serwera? w web.config?

+0

Miał dokładnie ten sam problem z Django działającym w IIS i Datatables, co spowodowało zapytanie ajaxowe o wielkości ~ 3500 znaków. Ustawienie limitu na 5000 rozwiązało to dzięki twojemu postowi, ale chciałbym, żeby komunikat o błędzie był bardziej pouczający. – tarikki

Odpowiedz

2

Wydaje się, że IIS rzuca niestandardowego kodu 404,15 błędu dla bardzo długich ciągów zapytań. Prawdopodobnie jest to w cieniu domyślnej procedury obsługi błędów, a rzeczywisty błąd jest odwzorowywany na pusty błąd 404.

Przeczytaj to do szczegółów: http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

+0

to jest moje pytanie. NIE otrzymuję błędu 404,15, ale po prostu ogólny błąd powyżej – leora

+0

Możesz złapać te błędy tak jak zwykle na localhost, ponieważ domyślny customErrors jest ustawiony na RemoteOnly. Możesz również spróbować wyłączyć stronę błędów IIS na kilka sposobów. Zobacz [tutaj] (http://ow.ly/JxLWh) [, tutaj] (http://ow.ly/JxM0i) [i tutaj] (http://ow.ly/JxM4Q) – Faheem

3

Per MSDN:

Kiedy bloki filtrujące żądanie żądanie HTTP, ponieważ żądanie HTTP przekracza granice żądania, IIS 7 zwróci błąd HTTP 404 do klient i zaloguj się do jednego z następujących statusów HTTP z unikalnym podstanem, który identyfikuje przyczynę odmowy żądania:

| HTTP | Substatus Description  | 
|---------|---------------------------| 
| 404.13 | Content Length Too Large | 
| 404.14 | URL Too Long    | 
| 404.15 | Query String Too Long  | 

FYI - 2048 jest ogólnie uważany za najwyższy limit dla różnych przeglądarek dla długości adresu URL.

Powiązane problemy