2011-02-02 12 views
28

Tengo un código VB.NET llamado cuando necesito eliminar un objeto de DB. En la carga de la página compruebo si no se trata de una publicación posterior (para evitar una actualización manual) y, después de la eliminación del objeto, me redirecciona a la página de la persona que llama utilizando Response.redirect. En este punto mi código de elevar una excepciónResponse.redirect plantea "El hilo estaba siendo abortado"

: excepción en File_delete.aspx.vb Número de línea: 34 Mensaje de error: Hilo estaba siendo abortados.

y, en el Visor de sucesos puedo ver que los accidentes Aspnet_wp.exe:

aspnet_wp.exe (PID: 1532) se detuvo inesperadamente.

Para obtener más información, vea la Ayuda y Support Center en http://go.microsoft.com/fwlink/events.asp.

No está claro por qué esto sucede solo aquí porque utilizo la respuesta.redirecta también para ver el archivo y no solo para eliminarlo.

+0

Cerrar duplicado de http://stackoverflow.com/questions/1433448/thread-was-being-aborted –

Respuesta

89

De forma predeterminada, Response.Redirect() anula el hilo actual. Naturalmente, esto arroja un ThreadAbortException. Se puede evitar pasando false a Response.Redirect(), que no abortará el hilo actual.

Sin embargo, tenga en cuenta lo que eso significa. Si el hilo no se cancela, el código que sigue al Response.Redirect() continuará ejecutándose. Controle su flujo lógico en consecuencia. (. Esto se hace a menudo con return declaraciones y otras directivas de control de flujo después de una redirección)

13

Response.Redirect siempre va a lanzar una ThreadAbortException, según la documentación de MSDN si usted no da un valor "falso" booleano de parámetro de entrada "endResponse" HttpRequest.Redirect (cadena, int):

Solo da el parámetro "falso" a "endResponse".

+1

Este es el enfoque recomendado, solo debe tener cuidado al usar esto como código después de que se ejecute Response.Redirect. –

+1

http://support.microsoft.com/kb/312629 –

+9

Después de llamar a Response.Redirect (url, false) llame a \t \t HttpContext.Current.ApplicationInstance.CompleteRequest(); para terminar sin una excepción. – StanleyH

0

Response.Redirect throws exception be design by design. Está bien.

Cuestiones relacionadas