Ich erstelle eine Site, in der ich aus dem Wert eines Textarea-Elements eine Client-Seite für eine Datei erstellen möchte.
Ich habe den Code dafür, aber ich erhalte diesen Fehler
HTTP-Fehler 404.15 - Nicht gefunden Das Anforderungsfiltermodul ist so konfiguriert, dass eine Anforderung abgelehnt wird, bei der die Abfragezeichenfolge zu lang ist.
Gibt es eine Möglichkeit, dies zu überschreiben, damit ich Anfragen jeder Größe verarbeiten kann?
Wenn nicht, gibt es eine Möglichkeit, Dateien clientseitig zu generieren, ohne das Objekt Dateisystem / aktives x zu verwenden?
Vielen Dank
c#
javascript
asp.net-mvc
web-config
query-string
some_bloody_fool
quelle
quelle
Antworten:
Fügen Sie Ihrer web.config Folgendes hinzu:
Sehen:
http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits
Aktualisiert, um Kommentare wiederzugeben.
requestLimits Element für requestFiltering [IIS-Einstellungsschema]
Möglicherweise müssen Sie in Ihrer web.config auch Folgendes hinzufügen
Siehe: httpRuntime Element (ASP.NET-Einstellungsschema)
Natürlich sind die Zahlen (32768 und 65536) in den obigen Konfigurationseinstellungen nur Beispiele. Sie müssen diese genauen Werte nicht verwenden.
quelle
In meinem Fall (Visual Studio 2012 / IIS Express / ASP.NET MVC 4-App / .Net Framework 4.5) funktionierte das Festlegen der
maxQueryStringLength
Eigenschaft im<httpRuntime>
Tag nach 30 Minuten Versuch und Irrtum wirklich :maxQueryStringLength
Standardmäßig ist2048
.Mehr dazu hier:
Erweitern des Bereichs zulässiger URLs
Ich habe versucht, es
<system.webServer>
so einzurichten , wie es @MattVarblow vorschlägt, aber es hat nicht funktioniert ... und das liegt daran, dass ich IIS Express (basierend auf IIS 8) auf meinem Entwicklungscomputer mit Windows 8 verwende.Als ich meine App in der Produktionsumgebung (Windows Server 2008 R2 mit IIS 7) bereitstellte, gab IE 10 404-Fehler in AJAX-Anforderungen mit langen Abfragezeichenfolgen zurück. Dann dachte ich, dass das Problem mit der Abfragezeichenfolge zusammenhängt und versuchte es mit der Antwort von @ MattVarblow. Es hat gerade auf IIS 7 funktioniert. :)
quelle
Noch etwas zu überprüfen: Wenn Ihre Site MVC verwendet, kann dies passieren, wenn Sie Ihrer Login-Controller-Klasse [Authorize] hinzugefügt haben. Es kann nicht auf die Anmeldemethode zugreifen, da es nicht autorisiert ist und daher zur Anmeldemethode umleitet -> boom.
quelle
Wenn Sie beim Ausführen eines IIS 8.5-Webservers auf dieses Problem stoßen, können Sie die folgende Methode verwenden.
Suchen Sie zuerst das Modul "Anforderungsfilterung" auf der IIS-Site, an der Sie arbeiten, und doppelklicken Sie dann darauf ...
Als nächstes müssen Sie mit der rechten Maustaste in den unten gezeigten weißen Bereich klicken und dann auf die Kontextmenüoption "Funktionseinstellungen bearbeiten" klicken .
Als letztes müssen Sie den Wert "Maximale Abfragezeichenfolge (Bytes)" von 2048 in einen Wert ändern, der für Ihre Anforderungen besser geeignet ist, z. B. 5000 .
quelle
Ich hatte ein ähnliches Problem beim Versuch, eine ASP-Webanwendung auf IIS 8 bereitzustellen. Um dies zu beheben, habe ich das getan, was Matt und Leniel oben vorgeschlagen haben. Musste aber auch die Authentifizierungseinstellung meiner Site konfigurieren, um die anonyme Authentifizierung zu aktivieren. Und das hat bei mir funktioniert.
quelle
Ich musste den ActionResult-Funktionen auf meiner Anmeldeseite [AllowAnonymous] hinzufügen, da der Benutzer noch nicht authentifiziert war.
quelle
Wenn Ihre Website die Authentifizierung verwendet, Sie jedoch nicht die richtige Authentifizierungsmethode in IIS eingerichtet haben (z. B. Basic, Forms usw.), bleibt der Browser in einer Umleitungsschleife stecken. Dies führt dazu, dass die Umleitungs-URL immer länger wird, bis sie explodiert.
quelle
Es wird auch ein Fehler generiert, wenn Sie eine große Zeichenfolge im Ajax-Aufrufparameter übergeben.
Verwenden Sie daher immer die Option post in ajax, um das Problem zu 100% zu lösen, und Sie müssen die Länge nicht in web.config festlegen.
// var UserId = Array von 1000 Benutzer-IDs
$ .ajax ({global: false, URL: SitePath + "/ User / getAussizzMembersData", "data": {UserIds: UserId}, "type": "POST", "dataType": "JSON"}}
quelle
Um dieses Problem zu beheben, überprüfen Sie im Quellcode, ob das
Form
Tag eine Eigenschaftmethod
hat, die den Status get / set hat.In diesem
method
Fall sollte die Eigenschaft entfernt werden.quelle