J'ai un site MVC3 en C #, j'ai une vue particulière étant alimenté par les paramètres de requête d'une fonction JavaScript, la fonction redirige vers le site via
window.location.href = "../ActionName?" + query_string;
query_string étant la chaîne de paramètres de requête dynamique créée par la fonction JavaScript.
La raison de cette bizarrerie est que parfois la même fonction transmet l'URL à un formulaire Web ASP.Net car elle doit utiliser le contrôle reportviewer , l'action alternative consiste à enregistrer certains paramètres dans ce cas, elle passe à la vue. (Peut élaborer plus si cela n'a pas de sens)
Le tout fonctionne bien jusqu'à ce que j'introduise [Authorize] à la méthode d'action. S'interrompt s'il est en place, fonctionne bien sans, et [Authorize] fonctionne bien sur toutes les autres méthodes.
L'URL entière dans ce cas fait 966 caractères, après recherche, il semble que la valeur maxQueryStringLength soit 2048 par défaut mais peut être remplacée par n'importe quelle valeur de type integer, donc juste pour les sourires, j'ai ajouté le
<security>
<requestFiltering>
<requestLimits maxQueryString="2048"></requestLimits>
</requestFiltering>
</security>
clé du fichier de configuration Web sous la clé.
Aucune joie là-bas, alors je suis devenu ridicule et je l'ai fait 4096, toujours pas de joie.
Maintenant que l'URL entière mesure 966 caractères, l'attribut authorize ne peut pas sérieusement ajouter 1082-3130 caractères supplémentaires, alors comment puis-je déterminer quelle est réellement l'erreur ou pourquoi le paramètre ne prend pas effet.
VS2010 Pro SP1