Al fin después de tanto trabajar ya encontramos el arreglo de esta escollo que tantos usuarios de nuestro sitio web han tenido. Si tienes algún detalle que aportar puedes dejar tu información.
Solución:
Si esto es ASP.NET 4, hubo un cambio importante con ValidateRequest
. Consulte esta pregunta de StackOverflow para obtener más información sobre requestValidationMode
.
Ya hay una buena respuesta para esto, y aquí proporcionaré la información para que no tenga que hacer clic en los enlaces.
Cuando ejecute ASP.NET 4.0, deberá configurar lo siguiente en su archivo web.config RequestValidationMode="2.0"
.
¿Para qué es esta propiedad?
Un valor que indica qué enfoque de validación específico de la versión de ASP.NET se utilizará. El valor predeterminado es 4.0.
Entonces, ¿cuáles son los valores posibles?
-
4.0 (el predeterminado). El objeto HttpRequest establece internamente un indicador que indica que la validación de la solicitud debe activarse cada vez que
Se accede a los datos de la solicitud HTTP. Esto garantiza que la solicitud
la validación se activa antes de que se envíen datos como cookies y direcciones URL.
accedido durante la solicitud. La configuración de validación de solicitudes del
elemento de páginas (si lo hay) en el archivo de configuración o de la página @
directiva en una página individual se ignoran. -
2.0. La validación de solicitudes está habilitada solo para páginas, no para todas las solicitudes HTTP. Además, la configuración de validación de solicitudes del elemento de páginas (si existe) en el archivo de configuración o de la directiva @ Page en una página individual se utilizan para determinar qué solicitudes de página validar.
Información citada de este sitio msdn.
Si desea agregar una lógica de validación personalizada para una página ASP.NET en particular o para una o más consultas string parámetros sin configurar ValidateRequest="false"
para toda la página: la siguiente solución “hacky” podría ser útil:
public partial class MyPage : System.Web.UI.Page
private string SomeUnvalidatedValue get; set;
public override void ProcessRequest(HttpContext context)
var queryString = context.Request.QueryString;
var readOnly = queryString.GetType().GetProperty("IsReadOnly",
System.Reflection.BindingFlags.Instance
La expresión regular creada como resultado del análisis de este método ASP.NET: CrossSiteScriptingValidation.IsDangerousString
Código probado con .NET 4.5.2, modo integrado IIS, con y sin RequestValidationMode="2.0"
.
Recuerda que te brindamos la opción de agregar una reseña .