120 votes

demande dépasse le maxQueryStringLength configuré lors de l’utilisation [Authorize]

enter image description hereJ'ai un MVC3 site en C#, j'ai un point de vue particulier d'être nourri les paramètres de la requête à partir d'une fonction javascript, la fonction redirige vers le site à travers la fenêtre.emplacement.href = "../ActionName?" + query_string;

query_string étant la dynamique des paramètres de requête string construit par la fonction javascript.

La raison de cette wierdness est que, parfois, la même fonction transmet l'URL d'un ASP.Net webform dû avoir à utiliser le contrôle reportviewer, l'action alternative consiste à enregistrer certains paramètres dans ce cas, il passe à la vue. (Peut donner plus de détails si cela ne fait pas de sens)

Le tout fonctionne bien jusqu'à ce que je introduire [Autoriser] pour la méthode de l'action. Les pauses s'il est en place, fonctionne très bien sans, et [Autoriser] fonctionne très bien sur toutes les autres méthodes.

L'ensemble de l'url dans ce cas est de 966 caractères de long, après recherche il semble que le maxQueryStringLength valeur est de 2048 par défaut, mais peut substituée à une valeur de type integer, donc juste pour sourire, j'ai ajouté l'

<security>
  <requestFiltering>
    <requestLimits maxQueryString="2048"></requestLimits>
  </requestFiltering>
</security>

la clé du fichier de configuration web sous la clé...

Pas de joie, je me suis donc ridicule et fait 4096, toujours pas de joie...

maintenant, avec l'ensemble de l'url en cours de 966 caractères de long, l'autoriser l'attribut ne peut pas sérieusement être l'ajout d'un autre 1082-3130 caractères, alors comment puis-je déterminer ce que l'erreur est en fait, ou pourquoi le paramètre n'est pas prise.

VS2010 Pro SP1

203voto

theJerm Points 1521

Dans la racine pour votre projet, en vertu de la nœud :

En outre, j’ai dû ajouter sous la `` nœud ou j’ai eu une erreur de sécurité pour mes chaînes de requête longue :

70voto

counsellorben Points 7865

Lorsqu'une non autorisée de la demande, la totalité de la demande est encodée URL, et ajouté comme une chaîne de requête, à la demande du formulaire d'autorisation, afin que je puisse voir d'où cela peut entraîner un problème compte tenu de votre situation.

Selon MSDN, le bon élément à modifier pour réinitialiser maxQueryStringLength dans le web.la config est l' <httpRuntime> élément à l'intérieur de l' <system.web> élément, voir httpRuntime Élément (ASP.NET Schéma des Paramètres). Essayez de modifier cet élément.

5voto

dball Points 121

Pour quelqu'un d’autre qui pourrait rencontrer ce problème et il n’est pas résolu par une des options ci-dessus, c’est ce qui a fonctionné pour moi.

J’avais désactivé cela parce que nous étions en utilisant nos propres Auth, mais qui conduisent à ce même problème et la réponse acceptée n’a pas aidé en quelque sorte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X