2010-06-18 5 views
2

.NET 4 s'est cassé ValidateRequest=“false” pour une raison quelconque.ValidateRequest = "false" et .NET 4 problème

La solution est - il suffit de mettre <httpRuntime requestValidationMode="2.0" /> dans votre fichier web.config.

Le problème avec cette solution est qu'elle rompt le support pour .NET 2.0! IIS refuse d'accepter les attributs inconnus dans web.config. Aussi, je n'aime pas la nature tout ou rien de cela. Puis-je définir requestValidationMode (ou d'une autre manière désactiver la validation de la requête) pour une seule page qui en a besoin? Sans casser en arrière la compatibilité de web.config avec 2.0?

+1

"Il refuse d'accepter les attributs inconnus dans web.config." Qu'est-ce que ça veut dire? Quand je mets par exemple'' J'obtiens une erreur quand je lance l'application ("attribut blabla inconnu"), peu importe si je mets '' ou non . Quel est exactement le problème? – Slauma

+0

le problème est que je ne peux pas avoir le même web.config pour s'exécuter sous .NET 2 et .NET 4. –

+0

@MK pourquoi vous avez besoin d'avoir la même configuration sous NET2 et NET4 ???? Je pense que vous essayez de penser que cela ne peut pas être fait. – Aristos

Répondre

0

OK, ressemble à ceci ne peut pas être fait et je ne peux tout simplement échapper les données facilement, mais je pense que ce fut une question légitime - au moins faire une note ici que ce ne peut pas être fait .

-1

Je viens de mettre cela dans mon web.config dans le nœud system.web.

<httpRuntime requestValidationMode="2.0" /> 
+1

Je suppose que cela pourrait gâcher le support de la version 2.0 alors dans votre web.config cependant. – Mike

+1

Oui, c'est la question. Il casse 2.0. Et c'est une couverture pour toute l'application. –

0

J'ai trouvé un meilleur moyen, je pense. Je n'ai pas aimé l'option de revenir à un paramètre 2.0 en 4.0. Je n'aime pas non plus l'option tout ou rien.

J'ai joué avec quelques choses et j'ai au moins dans mon esprit une solution pratique. Par défaut, toutes les pages validées indépendamment de la directive page « ValidateRequest = » false »

J'ai trouvé où faire ce paramètre dans le web.config dans la section system.web appelée pages (http: //. msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.validaterequest.aspx)

Si l'attribut validateRequest est ajouté dans l'élément pages que vous pouvez contrôler la validation pour l'ensemble du site.

Mais je suis fondu sur une chose heureuse tout en testant cela. Je n'ai pas pu trouver de docuementation pour cela, mais voici ce que j'ai vécu. Par défaut, la validation est activée partout, mais si la valeur validateRequest est définie sur "true", mes directives de page individuelles fonctionnent comme dans la version 2.0. Je ne sais pas pourquoi, mais je suis content.

Alors en résumé ... Définissez validateRequest sur true. Comme ici.

Ensuite, toutes les directives de page fonctionnent pour cette validation.

+0

Oh merde. J'ai trouvé que j'avais d'autres problèmes de configuration qui m'ont donné un faux positif sur celui-ci. Je pense que vous pouvez à peu près ignorer mes critiques ci-dessus, sauf pour avoir une meilleure compréhension de la section des pages de configuration web. – Nate

+0

Donc, après plus de travail, je vais humblement admettre qu'il n'y a rien qui peut être fait pour résoudre ce problème autre que la définition de requestValidationMode = "2.0". Mais j'ai défini l'attribut validateRequest = "true" dans la section pages de la configuration web. Puis, page par page, je peux désactiver la validation. – Nate

1

Je peux confirmer que l'approche d'ajouter validateRequest = "true" au fichier web.config fonctionne et c'est merveilleux! Cela permet aux directives au niveau de la page de fonctionner correctement et évite de devoir revenir au mode ASP.Net2.0.

Étrange que cela a un effet, vu que la demande de validation est normalement activée par défaut de toute façon, mais peu importe.

Questions connexes