Hoe de web.config te configureren om verzoeken van elke lengte toe te staan

Ik ben een site aan het bouwen waarin ik een bestand aan de clientzijde wil maken van de waarde van een textarea-element.

Ik heb de code om dit te doen, maar ik krijg deze foutmelding

HTTP-fout 404.15 – Niet gevonden De filtermodule voor aanvragen is
geconfigureerd om een ​​verzoek te weigeren waarbij de queryreeks te lang is.

Is er een manier om dit te negeren, zodat ik verzoeken van elke omvang kan verwerken?

Zo niet, is er een manier om aan de clientzijde bestanden te genereren zonder het bestandssysteem/active x-object te gebruiken?

bedankt


Antwoord 1, autoriteit 100%

Voeg het volgende toe aan uw web.config:

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

Zie:

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

Bijgewerkt om opmerkingen weer te geven.

requestLimits-element voor requestFiltering [IIS-instellingenschema ]

Mogelijk moet u ook het volgende toevoegen aan uw web.config

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

Zie: httpRuntime Element (ASP.NET Instellingenschema)

Natuurlijk zijn de nummers (32768 en 65536) in de bovenstaande configuratie-instellingen slechts voorbeelden. U hoeft die exacte waarden niet te gebruiken.


Antwoord 2, autoriteit 12%

In mijn geval (Visual Studio 2012 / IIS Express / ASP.NET MVC 4-app / .Net Framework 4.5) werkte na 30 minuten vallen en opstaan ​​echt het instellen van de eigenschap maxQueryStringLengthin de <httpRuntime>-tag:

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

maxQueryStringLengthis standaard 2048.

Hier meer over:

Het bereik van toegestane URL’s uitbreiden


Ik heb geprobeerd het in te stellen in <system.webServer>zoals @MattVarblowsuggereert, maar het werkte niet… en dit komt omdat ik IIS Express (gebaseerd op IIS 8) op mijn ontwikkelmachine met Windows 8 gebruik.

Toen ik mijn app in de productieomgeving implementeerde (Windows Server 2008 R2 met IIS 7), begon IE 10 404-fouten te retourneren in AJAX-verzoeken met lange queryreeksen. Toen dacht ik dat het probleem te maken had met de queryreeks en probeerde ik het antwoord van @MattVarblow. Het werkte gewoon op IIS 7. 🙂


Antwoord 3, autoriteit 3%

Als u dit probleem tegenkomt wanneer u een IIS 8.5-webserver gebruikt, kunt u de volgende methode gebruiken.

Zoek eerst de module “Request Filtering”op de IIS-site waaraan u werkt en dubbelklik erop…

Vervolgens moet u met de rechtermuisknop in het witte gebied hieronder klikken en vervolgens op de contextmenu-optie genaamd “Functie-instellingen bewerken”klikken.

Het laatste wat u hoeft te doen is de waarde “Maximum querytekenreeks (Bytes)”te wijzigen van 2048in iets dat meer geschikt is, zoals 5000voor uw behoeften.


Antwoord 4, autoriteit 2%

Iets anders om te controleren: als uw site MVC gebruikt, kan dit gebeuren als u [Authorize] hebt toegevoegd aan uw login-controllerklasse. Het heeft geen toegang tot de inlogmethode omdat het niet geautoriseerd is, dus het verwijst door naar de inlogmethode –> boem.


Antwoord 5

Het genereert ook een fout wanneer u een grote tekenreeks doorgeeft in de ajax-aanroepparameter.

dus gebruik daarvoor altijd post in ajax zal uw probleem 100% oplossenen het is niet nodig om de lengte in web.config in te stellen.

// var UserId= reeks van 1000 gebruikers-ID’s

$.ajax({
globaal: vals,
url: SitePath + “/User/getAussizzMembersData”,
“data”: { UserIds: UserId},
“type”: “POST”,
“dataType”: “JSON”
}}


Antwoord 6

Ik had een soortgelijk probleem bij het implementeren van een ASP-webtoepassing naar IIS 8. Om het te repareren deed ik wat Matt en Leniel hierboven suggereerden. Maar moest ook de authenticatie-instelling van mijn site configureren om anonieme authenticatie in te schakelen. En dat werkte voor mij.


Antwoord 7

Ik moest [AllowAnonymous] toevoegen aan de ActionResult-functies op mijn inlogpagina omdat de gebruiker nog niet was geverifieerd.


Antwoord 8

Als je website authenticatie gebruikt, maar je hebt niet de juiste authenticatiemethode ingesteld in IIS (bijv. Basic, Forms etc..), dan komt de browser vast te zitten in een omleidingslus. Dit zorgt ervoor dat de omleidings-URL langer en langer wordt totdat deze explodeert.


Antwoord 9

Voor iemand die dit ervaart tijdens het uitvoeren van de apps vanuit Visual Studio, tijdens het gebruik van IIS Express, moet u eerst het bestand applicationhost.configvinden dat door de toepassing wordt gebruikt. Zie het antwoord op https://stackoverflow.com/a/41553876/1849880over hoe u de applicationhost kunt vinden .configbestand. Vervolgens kunt u de waarde van maxQueryStringwijzigen zoals hierboven uitgelegd.


Antwoord 10

HTTP-fout 404.15 – Niet gevonden De filtermodule voor aanvragen is
geconfigureerd om een ​​verzoek te weigeren waarbij de queryreeks te lang is.

Om dit probleem op te lossen, controleert u in de broncode of de tag Formde eigenschap methodde status get/set heeft.

In dat geval moet de eigenschap methodworden verwijderd.

Other episodes