Buduję witrynę, w której chciałbym utworzyć plik po stronie klienta z wartości elementu textarea.
Mam kod, aby to zrobić, ale otrzymuję ten błąd
Błąd HTTP 404.15 - nie znaleziono Moduł filtrowania żądań jest skonfigurowany do odrzucania żądania, w którym ciąg zapytania jest zbyt długi.
Czy istnieje sposób, aby to zmienić, aby móc przetwarzać żądania o dowolnej wielkości?
Jeśli nie, czy istnieje sposób na generowanie plików po stronie klienta bez użycia systemu plików / aktywnego obiektu x?
dzięki
c#
javascript
asp.net-mvc
web-config
query-string
some_bloody_fool
źródło
źródło
Odpowiedzi:
Dodaj następujące elementy do swojego pliku web.config:
Widzieć:
http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits
Zaktualizowano w celu odzwierciedlenia komentarzy.
requestLimits, element requestFiltering [schemat ustawień usług IIS]
Być może będziesz musiał dodać następujące elementy w swoim pliku web.config
Zobacz: httpRuntime Element (schemat ustawień ASP.NET)
Oczywiście liczby (32768 i 65536) w ustawieniach konfiguracji powyżej to tylko przykłady. Nie musisz używać tych dokładnych wartości.
źródło
W moim przypadku (Visual Studio 2012 / IIS Express / ASP.NET MVC 4 app / .Net Framework 4.5) tym, co naprawdę zadziałało po 30 minutach prób i błędów, było ustawienie
maxQueryStringLength
właściwości w<httpRuntime>
tagu:maxQueryStringLength
domyślnie2048
.Więcej na ten temat tutaj:
Rozszerzenie zakresu dozwolonych adresów URL
Próbowałem ustawić go
<system.webServer>
tak, jak sugeruje @MattVarblow , ale nie zadziałało ... a to dlatego, że używam IIS Express (opartego na IIS 8) na mojej maszynie deweloperskiej z Windows 8.Kiedy wdrożyłem aplikację w środowisku produkcyjnym (Windows Server 2008 R2 z usługami IIS 7), przeglądarka IE 10 zaczęła zwracać błędy 404 w żądaniach AJAX z długimi ciągami zapytań. Potem pomyślałem, że problem jest związany z ciągiem zapytania i wypróbowałem odpowiedź @ MattVarblow. Po prostu działało w IIS 7. :)
źródło
Coś jeszcze do sprawdzenia: jeśli Twoja witryna używa MVC, może się to zdarzyć, jeśli dodałeś [Authorize] do klasy kontrolera logowania. Nie może uzyskać dostępu do metody logowania, ponieważ nie jest autoryzowana, więc przekierowuje do metody logowania -> boom.
źródło
Jeśli napotkasz ten problem podczas uruchamiania serwera internetowego IIS 8.5, możesz użyć następującej metody.
Najpierw znajdź moduł „Request Filtering” w witrynie IIS, nad którą pracujesz, a następnie kliknij go dwukrotnie ...
Następnie należy kliknąć prawym przyciskiem myszy biały obszar pokazany poniżej, a następnie kliknąć opcję menu kontekstowego o nazwie „Edytuj ustawienia funkcji” .
Ostatnią rzeczą do zrobienia jest zmiana wartości „Maksymalny ciąg zapytania (bajty)” z 2048 na coś bardziej odpowiedniego, np. 5000, odpowiadającego Twoim potrzebom.
źródło
Miałem podobny problem, próbując wdrożyć aplikację internetową ASP w IIS 8. Aby to naprawić, zrobiłem tak, jak sugerowali Matt i Leniel powyżej. Ale musiałem również skonfigurować ustawienie uwierzytelniania mojej witryny, aby włączyć uwierzytelnianie anonimowe. I to zadziałało dla mnie.
źródło
Musiałem dodać [AllowAnonymous] do funkcji ActionResult na mojej stronie logowania, ponieważ użytkownik nie został jeszcze uwierzytelniony.
źródło
Jeśli witryna korzysta z uwierzytelniania, ale nie masz skonfigurowanej prawidłowej metody uwierzytelniania w usługach IIS (np. Basic, Forms itp.), Przeglądarka utknie w pętli przekierowań. To powoduje, że adres URL przekierowania staje się coraz dłuższy, aż eksploduje.
źródło
Będzie również generować błąd podczas przekazywania dużego ciągu w parametrze wywołania ajax.
więc zawsze użyj typu post w Ajax, aby rozwiązać problem w 100% i nie ma potrzeby ustawiania długości w web.config.
// var UserId = tablica zawierająca 1000 identyfikatorów użytkowników
$ .ajax ({global: false, url: SitePath + "/ User / getAussizzMembersData", "data": {UserIds: UserId}, "type": "POST", "dataType": "JSON"}}
źródło
Aby rozwiązać ten problem, sprawdź w kodzie źródłowym, czy
Form
tag ma właściwość w staniemethod
get / set.Jeśli tak,
method
nieruchomość powinna zostać usunięta.źródło