2009-09-22 5 views
17

J'essaie de contourner l'erreur "potentiellement dangereuse Request.Form" et je n'ai aucune chance. Oui, oui, j'ai lu toutes les autres questions liées à StackOverflow et aucune d'entre elles ne semble me rapprocher d'une réponse. J'utilise [ValidateInput(false)] sur toutes les actions de contrôleur liées ... et j'ai vérifié plusieurs fois. J'utilise ValidateRequest='false' dans toutes les vues ASPX associées. J'utilise ASP.NET MVC 2 Preview 1, mais je ne pense pas que ce soit un problème puisque l'erreur est générée plus bas dans le cadre; Page.ProcessRequest pour être exact. Je ne vois rien que je fasse de mal, j'ai même mis <page validateRequest='false'> dans le web.config et cela ne l'a pas résolu non plus.L'attribut ValidateInput ne semble pas fonctionner dans ASP.NET MVC

Répondre

7

Eh bien ... répondu à mon propre problème ... le coupable: Html.RenderAction<T>. S'il y a des appels à d'autres actions dans le contexte de la requête (par exemple à partir de la page maître ou des partiels enfants), ces actions doivent également avoir un [ValidateInput(false)] défini de manière appropriée. Cela semble être un peu un problème avec MVC ou la façon dont l'objet Page fonctionne dans ASP.NET car il s'agit d'un bogue très obscur à trouver.

32

Avec asp.net 4, vous devez également configurer le mode de validation dans le fichier web.config.

définir les paramètres suivants comme un enfant de l'élément <system.web>:

<httpRuntime requestValidationMode="2.0"/> 

Asp.Net 4 définit le requestValidationMode à 4.0 par défaut, ce qui indique au système pour effectuer la validation de la demande avant la phase BeginRequst de la requête HTTP . La validation aura lieu avant que le système n'atteigne l'attribut d'action lui disant de ne pas valider la demande, rendant ainsi l'attribut inutile. La définition de requestValidationMode = "2.0" revient au comportement de validation de la requête asp.net 2.0, permettant à l'attribut ValidateInput de fonctionner comme prévu.

(merci Jim - upvotes belong here)

+0

Y at-il des inconvénients/inconvénients lors de l'utilisation de cette approche? Y a-t-il un moyen de configurer par action? –

+0

U sont l'homme de la vie sauve., Aussi, je voudrais savoir, y at-il des inconvénients pour cela? –

1

Vous devez ajouter l'attribut à chaque action du contrôleur qui est invoquée au cours de votre demande, à savoir vérifier toutes les demandes partielles.

Questions connexes