tutorial net mvc asp asp.net asp.net-mvc

tutorial - asp.net mvc versions



El atributo ValidateInput no parece funcionar en MVC de ASP.NET (4)

Estoy tratando de evitar el error "valor de Request.Form potencialmente peligroso" y no estoy teniendo suerte. Sí, sí, he leído todas las otras preguntas relacionadas con StackOverflow y ninguna de ellas parece acercarme más a una respuesta. Estoy usando [ValidateInput(false)] en todas las acciones relacionadas con el controlador ... y lo he comprobado muchas veces. Estoy usando ValidateRequest=''false'' en todas las vistas ASPX relacionadas.

Estoy usando ASP.NET MVC 2 Preview 1, pero no creo que sea un problema, ya que el error se está generando más bajo en el marco; Page.ProcessRequest para ser exacto. No puedo ver nada de lo que estoy haciendo mal, incluso puse <page validateRequest=''false''> en web.config y eso tampoco lo resolvió.


Bueno ... respondí a mi propio problema ... el culpable: Html.RenderAction<T> . Si hay llamadas a otras acciones en el contexto de la solicitud (p. Ej., Desde la Página maestra o parciales secundarios), estas acciones también deben tener [ValidateInput(false)] configurado correctamente. Esto parece ser un pequeño problema, aunque con MVC o la forma en que funciona el objeto Page en ASP.NET, ya que es un error muy confuso que hay que encontrar.


Con asp.net 4, también deberá configurar el modo de validación en web.config.

Establece lo siguiente como un elemento secundario del elemento <system.web> :

<httpRuntime requestValidationMode="2.0"/>

Asp.Net 4 establece el requestValidationMode en 4.0 de manera predeterminada, lo que le indica al sistema que realice la validación de la solicitud antes de la fase BeginRequst de la solicitud HTTP. La validación se producirá antes de que el sistema alcance el atributo de acción que le indica que no valide la solicitud, por lo que deja el atributo inútil. La configuración de requestValidationMode = "2.0" volverá al comportamiento de validación de solicitud de asp.net 2.0, permitiendo que el atributo ValidateInput funcione como se espera.

(gracias Jim - upvotes pertenecen aquí )


Debe agregar el atributo a cada acción del controlador que se invoca durante su solicitud, es decir, verificar todas las solicitudes parciales.