Tengo este código para manejar HttpRequestValidationException en mi archivo global.asax.cs.Cómo atrapar HttpRequestValidationException en producción
protected void Application_Error(object sender, EventArgs e)
{
var context = HttpContext.Current;
var exception = context.Server.GetLastError();
if (exception is HttpRequestValidationException)
{
Response.Clear();
Response.StatusCode = 200;
Response.Write(@"<html><head></head><body>hello</body></html>");
Response.End();
return;
}
}
Si depuro mi aplicación web, funciona perfecto. Pero cuando lo pongo en nuestro servidor de producción, el servidor lo ignora y genera el "una solicitud potencialmente peligrosa.se detectó un valor desde el cliente" - página de error. No sé lo que sucede exactamente ... Si alguien sabe cuál es el problema, o lo que hago mal ...?
Además, no quiero configurar validaterequest en falso en el web.config.
El servidor usa IIS7.5, y estoy usando asp.net 3.5.
Gracias, Bruno
No creo que necesite el "contexto" var. Funciona muy bien como "Server.GetLastError()" y "Server.ClearError()". – WildJoe
Response.End() arroja una excepción por diseño. En su lugar, use esto: 'HttpContext.Current.ApplicationInstance.CompleteRequest'. Eche un vistazo a esto para la explicación: https://support.microsoft.com/en-us/help/312629/prb-threadabortexception-occurs-if-you-use-response-end-response-redir – Kamran