¿Puede "EndResponse" aumentar el rendimiento de la página ASP.Net?
tengo unResponse.Redirect
en mi página de empleado. Redirige a la página Salario.
Response.Redirect ("Salary.aspx");
Estaba funcionando bien hasta que agregué el manejo de excepciones como se muestra a continuación.
try
{
Response.Redirect ("Salary.aspx");
}
catch(Exception ex)
{
//MyLog();
throw new Exception();
}
//Remaining code in event handler
Esto provocó una nueva excepción que decía "Se estaba abortando el hilo". Llegué a saber que esto se puede evitar configurandoendResponse
como falso para el redireccionamiento.
Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();
Explicación de la nueva excepción: siempre lanza la excepción pero es manejada por el marco. Desde que agregué un try..catch fue capturado allí (y estoy lanzando una nueva excepción)
Nota:CompleteRequest
pasa por alto otros filtros y módulos HTTP, pero no pasa por alto otros eventos en el ciclo de vida de la página actual
Nota: Response.Redirect lanza esta excepción para finalizar el procesamiento de la página actual. ASP .Net se encarga de esta excepción y llamaResetAbort
para continuar el procesamiento.
PREGUNTA
Si "establecer endResponse como falso" puedeincrementar ¿Rendimiento ya que no se lanza la excepción?Si "establecer endResponse como falso" puededisminución ¿Rendimiento ya que los eventos del ciclo de vida de la página no se terminan?TRAMPA
Si establece endResponse comofalse
, se ejecutará el código restante en el eventhandler. Así que necesitamos hacer unaif
verifique el código restante (marque: si no se cumplieron los criterios de redirección).Referencia
¿Por qué Response.Redirect causa System.Threading.ThreadAbortException?La excepción de ASP.NET "El hilo se estaba abortando" hace que el método se cierre