ValidateRequest = “false” non funziona in Asp.Net 4

Ho un modulo in cui utilizzo il ckeditor. Questo modulo ha funzionato bene in Asp.Net 2.0 e 3.5 ma ora non funziona in Asp.Net 4+. Ho ValidateRequest = “false” direttiva. Eventuali suggerimenti?

Soluzione trovata nella pagina di errore. Ho solo bisogno di aggiungere requestValidationMode = “2.0”

    

Informazioni MSDN: proprietà HttpRuntimeSection.RequestValidationMode

C’è un modo per riportare la convalida a 2.0 per una pagina. Basta aggiungere il codice seguente al tuo web.config:

       ... the rest of your configuration ...  

So che questa è una vecchia domanda, ma se incontri questo problema in MVC 3, puoi decorare il tuo ActionMethod con [ValidateInput(false)] e semplicemente distriggersre la convalida della richiesta per un singolo ActionMethod , che è a portata di mano. Inoltre, non è necessario apportare alcuna modifica al file web.config , quindi è comunque ansible utilizzare la convalida di richieste .NET 4. ovunque.

per esempio

 [ValidateInput(false)] public ActionMethod Edit(int id, string value) { // Do your own checking of value since it could contain XSS stuff! return View(); } 

Questo funziona senza modificare la modalità di convalida.

Devi utilizzare un helper System.Web.WebPages.dll da System.Web.WebPages.dll . Restituisce un object UnvalidatedRequestValues che consente di accedere al modulo e QueryString senza convalida.

Per esempio,

 var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey")); 

Funziona per me per MVC3 e .NET 4.

Si noti che un altro approccio è quello di mantenere il comportamento di convalida 4.0, ma di definire la propria class che deriva da RequestValidator e impostare:

  

(dove YourNamespace.YourValidator è buono, dovresti essere in grado di indovinare …)

In questo modo si mantengono i vantaggi del comportamento della 4.0 (in particolare, che la convalida avviene prima nell’elaborazione), consentendo nel contempo le richieste che è necessario lasciare passare attraverso.