2011-12-09 24 views
9

tutaj jest mój adres URLŻądanie URL jest nieprawidłowy w IIS 7

http://abc.domain.com/controller/action/A74444C3A7FA858C7995CA9954CBCF1E26604634767C5575396D908E8415CF8CCC04C05F49FED0AA9D9743B69ABF232BDE9787A5222D081DA638896C0D2379A673E1747A2FFE1158F14AF098B2899D2ABEB4EA738D89369627E479796B6B2B9EA9B247CC59EF10E3A88B6A56A87F0818E2AD2A942FFA31F1C941BB7AF6FDC55FE6733353F28DFAC1827688604CBFBAB4856E6C75F810D13923F9D913F51F5B02980163E6CD63BC04610AD2C12E07360D7BC2C69F1B0CD03E

nie ma niedozwolonych znaków w samej zawartości jak wszystko jest szyfrowane. Nadal dostaję się

Złe żądanie - nieprawidłowy adres URL Błąd HTTP 400. URL żądania jest nieprawidłowy.

wiem, że adres URL jest strasznie długa i udało mi się rozwiązać ten problem w moim Cassini dodając ten httpRuntime maxUrlLength = „512”

w web.config

Jednak w IIS7 nawet po bawiąc się z wartościami filtrowania żądania maxurl i maxquerystring, nie byłem w stanie tego rozwiązać.

To jest aplikacja asp.net mvc 3.

+0

Czy próbowali grać z [ ''] (http: // www .iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits)? Wiem, że jest to wersja lub dwie z powrotem z IIS7, ale mogą mieć niektóre z tych samych konfliktów. –

+0

yes Dodałem tę requestLimits maxUrl = "512" pod system.webserver – Qudoos

Odpowiedz

9

Twój problem polega na tym, że nie używasz ciągu zapytania, ale ścieżki. Ścieżka ma maksymalną długość 255.

+0

[Według MSDN] (http://msdn.microsoft.com/en-us/library/ms689462%28v=vs.90%29. aspx) domyślna długość maxUrl (w bajtach) to 4096 –

+0

Możesz być poprawny, ale to nie wyjaśnia, dlaczego działa na Cassini. Na mojej maszynie deweloperskiej Win 7 działa ona z Cassini, ale nie działa, gdy uruchamiam tę samą witrynę w IIS 7. Jeśli limit znajduje się na ścieżce, powinien znajdować się na poziomie systemu operacyjnego. Nie? – Qudoos

+0

@Brad, tak, czytałem to i grałem z naprawdę dużymi liczbami, aby sprawdzić, czy to działa – Qudoos

21

Ten jest dla potomności i śledzenia mój własny problem. Zostało to powiedziane w innej odpowiedzi, nie tak wyraźnie.

Miałem ten sam problem po mojej stronie. Odpowiedzią jest oczywiście przeniesienie długiego segmentu adresu URL na ciąg zapytania. Łatwiejsze w obsłudze.

Problem polega jednak na tym, że HTTP.sys nawet nie pozwala na przekazanie żądania, ponieważ segment adresu URL przekracza 260 znaków. Nadal jednak musieliśmy go wspierać.

Możesz zmienić to ustawienie w rejestrze. Po ponownym uruchomieniu adres URL będzie działał.

rejestru:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters] 
"UrlSegmentMaxLength"=dword:00000400 

To będzie skutecznie ustawić długość odcinka do 1024.

Source

+5

*** To *** jest *** prawdziwym *** ** rozwiązaniem **! Działa jak urok (Win8, IIS 8) –

+2

To zdecydowanie działało na Windows Server 2012. Jedyną różnicą było to, że klucza nie było, więc trzeba go dodać ... – vidriduch

+1

@vidriduch Tak, to musi być stworzone. Podobnie jak większość ustawień rejestru, jeśli klucz nie jest obecny, będzie obowiązywać ustawienie domyślne. Domyślnie tutaj jest 260. :) –

Powiązane problemy