2010-08-31 4 views
9

Je reçois des erreurs avec une application sur notre serveur Web de test, sur lequel .NET 4.0 est installé, lorsque je saisis le code HTML dans un formulaire. Je reçois les erreurs habituelles de:<httpRuntime requestValidationMode = "2.0" /> ne fonctionne pas (en utilisant IIS 6.0)

Une valeur Request.Form potentiellement dangereuse a été détectée à partir du client

Ceci est causé par le changement de .NET 4.0 qui désactive la validation automatique de commutation pour Entrée HTML. Je peux résoudre ce problème sur ma machine de développement local en ajoutant le

<httpRuntime requestValidationMode="2.0" /> 

directive à la section <system.web> de mon web.config racine, et .NET honore alors la directive <pages validateRequest="false" /> qui est dans la même racine web.config. Bizarrement, j'avais besoin de redémarrer IIS sur ma machine locale (qui est la version 5.1) pour que cette modification fonctionne.

Lorsque je déploie la racine web.config sur notre serveur de test, les erreurs de validation continuent de se produire. J'ai essayé d'utiliser run > iisreset, en arrêtant et en démarrant IIS (qui est la version 6.0 sur le serveur de test), et j'ai même redémarré le serveur pour vider entièrement .NET. Mon application récupère définitivement la nouvelle racine web.config (que j'ai testée), mais la directive <httpRuntime requestValidationMode="2.0" /> semble juste être ignorée.

Mon application est configurée en tant qu'application .NET 4.0 sur ma machine locale et sur le serveur de test. J'ai essayé de reconstruire l'application et de la redéployer sur le serveur Web de test. Quelqu'un peut-il suggérer ce que je dois faire pour que cela fonctionne?

Merci à l'avance, Chris

+0

Pour moi son travail sur le développement et l'environnement du produit sans aucun problème. Peut-être est-ce autre chose que vous avez manqué. – Aristos

+0

Etes-vous sûr de lancer votre application dans un pool d'applications sous 4.0? Ou êtes-vous en train de l'exécuter dans un répertoire/application virtuel qui est un enfant pour une application 2.0/3.5? – Ted

Répondre

3

Si vous utilisez MVC3, essayez d'ajouter un filtre global en Global.asax.cs.

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new ValidateInputAttribute(false)); 
} 
Questions connexes