it-swarm.com.de

So konfigurieren Sie die web.config, um Anforderungen beliebiger Länge zuzulassen

Ich baue eine Site, in der ich aus dem Wert eines Textfeldelements ein Dateisystem erstellen möchte.

Ich habe den Code dafür, aber ich erhalte diesen Fehler

HTTP-Fehler 404.15 - Nicht gefunden Das Anforderungsfilterungsmodul ist ist so konfiguriert, dass eine Anfrage abgelehnt wird, deren Abfragezeichenfolge zu lang ist.

Gibt es eine Möglichkeit, dies zu überschreiben, damit ich Anfragen beliebiger Größe bearbeiten kann?

Wenn nicht, gibt es eine Möglichkeit, Dateien clientseitig zu generieren, ohne das Dateisystem/ActiveX-Objekt zu verwenden?

vielen Dank

121

Fügen Sie Ihrer web.config Folgendes hinzu:

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxQueryString="32768"/>
    </requestFiltering>
  </security>
</system.webServer>

Sehen:

http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits

Aktualisiert um Kommentare zu reflektieren.

requestLimits Element für requestFiltering [IIS-Einstellungsschema]

Möglicherweise müssen Sie auch Folgendes in Ihrer web.config hinzufügen

<system.web>
    <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>

Siehe: httpRuntime-Element (ASP.NET-Einstellungsschema)

Die Zahlen (32768 und 65536) in den obigen Konfigurationseinstellungen sind natürlich nur Beispiele. Sie müssen diese exakten Werte nicht verwenden.

218
Matt Varblow

In meinem Fall (Visual Studio 2012/IIS Express/ASP.NET MVC 4-App/.Net Framework 4.5) funktionierte nach 30 Minuten Versuch und Fehler das Festlegen der Eigenschaft maxQueryStringLength im Tag <httpRuntime>:

<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />

maxQueryStringLength ist standardmäßig auf 2048 eingestellt.

Mehr dazu hier:

Erweitern des Bereichs zulässiger URLs


Ich habe versucht, es in <system.webServer> als @MattVarblow zu setzen, schlägt jedoch vor, aber es hat nicht funktioniert ... und das ist, weil ich IIS Express (basierend auf IIS 8) auf meinem Computer verwende Entwicklungsmaschine mit Windows 8.

Bei der Bereitstellung meiner App in der Produktionsumgebung (Windows Server 2008 R2 mit IIS 7) wurden von IE 10 404 Fehler in AJAX - Anforderungen mit langen Abfragezeichenfolgen zurückgegeben. Dann dachte ich, dass das Problem mit der Abfragezeichenfolge zusammenhängt und versuchte die Antwort von @ MattVarblow. Es hat gerade an IIS 7 gearbeitet. :)

29

Noch etwas zu prüfen: Wenn Ihre Site MVC verwendet, kann dies passieren, wenn Sie [Authorize] zu Ihrer Login-Controller-Klasse hinzugefügt haben. Es kann nicht auf die Anmeldemethode zugreifen, da diese nicht autorisiert ist, und leitet zur Anmeldemethode -> Boom.

5
SteveCav

Ich hatte ein ähnliches Problem beim Versuch, eine ASP - Webanwendung auf IIS bereitzustellen. 8. Um das Problem zu beheben, habe ich die von Matt und Leniel vorgeschlagenen Vorschläge gemacht. Mußte aber auch die Authentifizierungseinstellung meiner Site konfigurieren, um die anonyme Authentifizierung zu aktivieren. Und das hat für mich funktioniert.

0

Ich musste [AllowAnonymous] zu den ActionResult-Funktionen auf meiner Anmeldeseite hinzufügen, da der Benutzer noch nicht authentifiziert wurde.

0
Andrew Gale

Wenn dieses Problem bei der Ausführung eines Webservers IIS 8.5 auftritt, können Sie die folgende Methode verwenden.

Suchen Sie zunächst das Modul "Request Filtering" in der Site IIS, an der Sie gerade arbeiten, und doppelklicken Sie darauf.

 enter image description here

Als Nächstes müssen Sie mit der rechten Maustaste in den weißen Bereich klicken, der unten angezeigt wird. Klicken Sie dann auf die Kontextmenüoption "Feature-Einstellungen bearbeiten".

 enter image description here

Das letzte, was Sie tun müssen, ist, den Wert für "Maximale Abfragezeichenfolge (Bytes)" von 2048 in ein für Sie passenderes Format wie 5000 zu ändern.

 enter image description here

0
Arvo Bowen

Wenn Ihre Website eine Authentifizierung verwendet, Sie jedoch nicht die richtige Authentifizierungsmethode in IIS (z. B. Basic, Forms usw.) eingerichtet haben, bleibt der Browser in einer Weiterleitungsschleife hängen. Dadurch wird die Weiterleitungs-URL länger und länger, bis sie explodiert.

0
Steve Smith