miércoles, 25 de mayo de 2011

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack

Se han topado alguna vez con este engorroso error??

Esto aparece cuando utilizamos los métodos Response.End, Response.Redirect o Server.Transfers, en estos métodos se produce una excepción de tipo ThreadAbortException que puede ser capturada con un try-catch.

Solución:

Para Response.End utilizar HttpContext.Current.ApplicationInstance.CompleteRequest en lugar de Response.End.

Para Response.Redirect llamarlo de la siguiente forma Response.Redirect(String url, bool endResponse) enviando false en el parámetro endResponse, por ejemplo:

Response.Redirect("siguientePagina.aspx", false);

Para Server.Transfer usar en lugar de este método, este otro: Server.Execute.

Espero esta información pueda serles de utilidad.

1 comentario:

  1. Saludos,

    el problema que me ocurre al utilizar

    HttpContext.Current.ApplicationInstance.CompleteRequest

    es que me arroja un monton de basura al estar escribiendo un archivo de texto, o mas que basura me arroja el codigo html de la pagina, sabes como evitar esto?

    ResponderEliminar