J'ai un formulaire où j'utilise ckeditor. Ce formulaire fonctionnait bien sous Asp.Net 2.0 et 3.5, mais il ne fonctionne plus dans Asp.Net 4+. J'ai ValidateRequest = "false" directive. Aucune suggestion?
Solution trouvée à la page d'erreur. Il suffit juste d'ajouter requestValidationMode = "2.0"
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
Informations MSDN: propriété HttpRuntimeSection.RequestValidationMode
Il existe un moyen de ramener la validation à 2.0 pour une page. Ajoutez simplement le code ci-dessous à votre web.config:
<configuration>
<location path="XX/YY">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>
...
the rest of your configuration
...
</configuration>
Je sais que c’est une vieille question, mais si vous rencontrez ce problème dans MVC 3, vous pouvez décorer votre ActionMethod
avec [ValidateInput(false)]
et simplement désactiver la validation de la demande pour un seul ActionMethod
, c’est-à-dire pratique. De plus, vous n'avez pas besoin de modifier le fichier web.config
, vous pouvez donc toujours utiliser la validation de la demande .NET 4 partout ailleurs.
par exemple.
[ValidateInput(false)]
public ActionMethod Edit(int id, string value)
{
// Do your own checking of value since it could contain XSS stuff!
return View();
}
Cela fonctionne sans changer le mode de validation.
Vous devez utiliser un assistant System.Web.Helpers.Validation.Unvalidated
à partir de System.Web.WebPages.dll
. Il va retourner un objet UnvalidatedRequestValues
qui permet d'accéder au formulaire et à QueryString sans validation.
Par exemple,
var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));
Fonctionne pour moi pour MVC3 et .NET 4.
Notez qu'une autre approche consiste à conserver le comportement de validation 4.0, mais à définir votre propre classe qui dérive de RequestValidator
et à définir:
<httpRuntime requestValidationType="YourNamespace.YourValidator" />
(où YourNamespace.YourValidator
est bien, vous devriez pouvoir le deviner ...)
Ainsi, vous conservez les avantages du comportement de la version 4.0 (en particulier, le fait que la validation a lieu plus tôt dans le traitement), tout en permettant aux demandes que vous devez laisser passer.