web-dev-qa-db-fra.com

Comment configurer le web.config pour autoriser les requêtes de toute longueur

Je construis un site sur lequel je voudrais créer un fichier côté client à partir de la valeur d'un élément textarea.

J'ai le code en place pour le faire, mais j'obtiens cette erreur

Erreur HTTP 404.15 - Introuvable Le module de filtrage des demandes est configuré pour refuser une demande pour laquelle la chaîne de requête est trop longue.

Existe-t-il un moyen de contourner ce problème afin que je puisse traiter des demandes de toutes tailles?

Sinon, est-il possible de générer des fichiers côté client sans utiliser l'objet système de fichiers/actif x?

merci

121
some_bloody_fool

Ajoutez ce qui suit à votre web.config:

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

Voir:

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

Mis à jour pour refléter les commentaires.

élément requestLimits pour requestFiltering [schéma de paramètres IIS]

Vous devrez peut-être également ajouter ce qui suit dans votre web.config

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

Voir: Elément httpRuntime (schéma ASP.NET Settings)

Bien sûr, les numéros (32768 et 65536) dans les paramètres de configuration ci-dessus ne sont que des exemples. Vous n'êtes pas obligé d'utiliser ces valeurs exactes.

218
Matt Varblow

Dans mon cas (Visual Studio 2012/IIS Express/ASP.NET MVC 4 app/.Net Framework 4.5), ce qui a vraiment fonctionné après 30 minutes d'essai et d'erreur a été de définir la propriété maxQueryStringLength dans la balise <httpRuntime>:

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

maxQueryStringLength est défini par défaut sur 2048.

Plus à ce sujet ici:

Extension de la plage d'URL autorisées


J'ai essayé de le configurer dans <system.webServer> sous la forme @MattVarblow suggère, mais cela n'a pas fonctionné ... et c'est parce que j'utilise IIS Express (basé sur IIS 8) sur mon machine à dev avec Windows 8.

Lorsque j'ai déployé mon application dans l'environnement de production (Windows Server 2008 R2 avec IIS 7), IE 10 a commencé à renvoyer 404 erreurs dans les demandes AJAX avec des chaînes de requête longues. Ensuite, j'ai pensé que le problème était lié à la chaîne de requête et j'ai essayé la réponse de @ MattVarblow. Cela a juste fonctionné sur IIS 7. :)

29

Autre chose à vérifier: si votre site utilise MVC, cela peut se produire si vous avez ajouté [Autoriser] à votre classe de contrôleur de connexion. Il ne peut pas accéder à la méthode de connexion car elle n'est pas autorisée. Il est donc redirigé vers la méthode de connexion -> boom.

5
SteveCav

J'ai eu un problème similaire en essayant de déployer une application Web ASP sur IIS 8. Pour résoudre ce problème, j'ai procédé comme Matt et Leniel l'ont suggéré plus haut. Mais également dû configurer le paramètre d'authentification de mon site pour activer l'authentification anonyme. Et cela a fonctionné pour moi.

0
Ronald Nsabiyera

J'ai dû ajouter [AllowAnonymous] aux fonctions ActionResult de ma page de connexion car l'utilisateur n'était pas encore authentifié.

0
Andrew Gale

Si vous rencontrez ce problème lors de l'exécution d'un serveur Web IIS 8.5, vous pouvez utiliser la méthode suivante.

Tout d'abord, recherchez le module "Request Filtering" dans le site IIS sur lequel vous travaillez, puis double-cliquez dessus ...

 enter image description here

Ensuite, vous devez cliquer avec le bouton droit de la souris sur la zone blanche illustrée ci-dessous, puis cliquer sur l’option de menu contextuel intitulée "Modifier les paramètres de fonction".

 enter image description here

Ensuite, la dernière chose à faire est de changer la valeur "Chaîne de requête maximale (octets)" de 2048 à une valeur plus appropriée, telle que 5000, selon vos besoins.

 enter image description here

0
Arvo Bowen

Si votre site Web utilise l'authentification, mais que la méthode d'authentification appropriée n'est pas configurée dans IIS (par exemple, Base, Formulaires, etc.), le navigateur reste bloqué dans une boucle de redirection. Cela fait que l'URL de redirection devient de plus en plus longue jusqu'à ce qu'elle explose.

0
Steve Smith