Tengo un formulario en el que uso ckeditor. Este formulario funcionó bien en Asp.Net 2.0 y 3.5, pero ahora no funciona en Asp.Net 4+. Tengo la directiva ValidateRequest = "false". ¿Alguna sugerencia?
Tengo un formulario en el que uso ckeditor. Este formulario funcionó bien en Asp.Net 2.0 y 3.5, pero ahora no funciona en Asp.Net 4+. Tengo la directiva ValidateRequest = "false". ¿Alguna sugerencia?
Respuestas:
Solución encontrada en la página de error. Solo necesitaba agregar requestValidationMode = "2.0"
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
Información de MSDN: Propiedad HttpRuntimeSection.RequestValidationMode
Hay una manera de volver la validación a 2.0 para una página. Simplemente agregue el siguiente código a su web.config:
<configuration>
<location path="XX/YY">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>
...
the rest of your configuration
...
</configuration>
Sé que esto es una vieja pregunta, pero si se encuentra con este problema en MVC 3 a continuación, se puede decorar su ActionMethod
con [ValidateInput(false)]
y simplemente apagar la validación de solicitudes para una sola ActionMethod
, que es práctico. Y no necesita realizar ningún cambio en el web.config
archivo, por lo que aún puede usar la validación de solicitud de .NET 4 en cualquier otro lugar.
p.ej
[ValidateInput(false)]
public ActionMethod Edit(int id, string value)
{
// Do your own checking of value since it could contain XSS stuff!
return View();
}
Esto funciona sin cambiar el modo de validación.
Tienes que usar un System.Web.Helpers.Validation.Unvalidated
ayudante de System.Web.WebPages.dll
. Va a devolver un UnvalidatedRequestValues
objeto que permite acceder al formulario y a QueryString sin validación.
Por ejemplo,
var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));
Funciona para mí para MVC3 y .NET 4.
Tenga en cuenta que otro enfoque es mantenerse con el comportamiento de validación 4.0, pero definir su propia clase que se deriva RequestValidator
y establece:
<httpRuntime requestValidationType="YourNamespace.YourValidator" />
(donde YourNamespace.YourValidator
está bien, deberías poder adivinar ...)
De esta manera, mantiene las ventajas del comportamiento 4.0s (específicamente, que la validación ocurre antes en el procesamiento), al tiempo que permite las solicitudes que debe dejar pasar.