Ho un modulo in cui uso ckeditor. Questo modulo ha funzionato bene su Asp.Net 2.0 e 3.5 ma ora non funziona su Asp.Net 4+. Ho la direttiva ValidateRequest = "false". Eventuali suggerimenti?
Ho un modulo in cui uso ckeditor. Questo modulo ha funzionato bene su Asp.Net 2.0 e 3.5 ma ora non funziona su Asp.Net 4+. Ho la direttiva ValidateRequest = "false". Eventuali suggerimenti?
Risposte:
Soluzione trovata nella pagina di errore. Ho solo bisogno di aggiungere requestValidationMode = "2.0"
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
Informazioni MSDN: proprietà HttpRuntimeSection.RequestValidationMode
C'è un modo per riportare la convalida su 2.0 per una pagina. Aggiungi il codice seguente al tuo web.config:
<configuration>
<location path="XX/YY">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>
...
the rest of your configuration
...
</configuration>
So che questa è una vecchia domanda, ma se si riscontra questo problema in MVC 3, è possibile decorare ActionMethod
con [ValidateInput(false)]
e semplicemente disattivare la convalida della richiesta per un singolo ActionMethod
, il che è utile. E non è necessario apportare modifiche al web.config
file, quindi è comunque possibile utilizzare la convalida della richiesta .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();
}
Funziona senza cambiare la modalità di validazione.
Devi usare un System.Web.Helpers.Validation.Unvalidated
aiuto da System.Web.WebPages.dll
. Restituirà un UnvalidatedRequestValues
oggetto che consente di accedere al modulo e a 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 è mantenere il comportamento di convalida 4.0, ma definire la propria classe che deriva RequestValidator
e imposta:
<httpRuntime requestValidationType="YourNamespace.YourValidator" />
(dove YourNamespace.YourValidator
va bene, dovresti essere in grado di indovinare ...)
In questo modo si mantengono i vantaggi del comportamento 4.0s (in particolare, che la convalida avviene prima nell'elaborazione), consentendo anche le richieste che è necessario far passare, attraverso.