asp.net - personalizadas - throw custom exception c#
¿Por qué me sale "El hilo estaba siendo abortado" en asp.net? (7)
ASP.NET genera y elimina procesos de trabajo todo el tiempo según sea necesario. Su hilo acaba de ser cerrado por ASP.NET.
Vieja respuesta:
Problema conocido: PRB: ThreadAbortException se produce si utiliza Response.End, Response.Redirect o Server.Transfer
Response.Redirect ("bla.aspx", false);
o
try
{
Response.Redirect("bla.aspx");
}
catch (ThreadAbortException ex)
{
}
No estoy seguro de por qué sucede esto y nunca aborto explícitamente los hilos, por lo que es un poco sorprendente. Pero registro Excepciones y estoy viendo:
System.Threading.ThreadAbortException - El hilo estaba siendo abortado.
Parece suceder en una llamada a System.Threading.WaitHandle.WaitOne
. No estoy seguro de hasta dónde va esta Excepción. No creo que mis hilos terminen nunca porque capturo el registro y me trago el error.
¿Alguien sabe por qué estoy recibiendo estos errores? ¿Quizás es cuando estoy terminando mi servidor por la fuerza o solicitando que se reinicie? Si no es así, ¿qué podría estar causándoles?
Este error puede deberse al intentar finalizar la respuesta más de una vez. Como otras respuestas ya mencionadas hay varios métodos que terminarán una respuesta (como Response.End
o Response.Redirect
). Si llama a más de uno en una fila, obtendrá este error.
Me encontré con este error cuando traté de utilizar Response.End
después de usar Response.TransmitFile
que también parece finalizar la respuesta.
Este problema se produce en los métodos Response.Redirect
y Server.Transfer
porque ambos métodos llaman a Response.End
internamente.
La solución para este problema es la siguiente.
Para Server.Transfer
, use el método Server.Execute
lugar.
Visite este enlace para descargar ejemplos de muestra.
No, ThreadAbortException
es lanzado por un simple Response.Redirect
Obtuve este error cuando hice un Response.Redirect
después de un inicio de sesión exitoso del usuario.
Lo arreglé haciendo una FormsAuthentication.RedirectFromLoginPage
en FormsAuthentication.RedirectFromLoginPage
lugar.
Para un servicio web alojado en ASP.NET, la propiedad de configuración es executionTimeout:
<configuration> <system.web>
<httpRuntime executionTimeout="360" />
</system.web>
</configuration>
Establezca esto y la excepción de aborto de hilos desaparecerá :)
Si genera hilos en Application_Start
, seguirán ejecutándose en el AppDomain
del grupo de aplicaciones.
Si una aplicación está inactiva durante algún tiempo (lo que significa que no se reciben solicitudes), o se cumplen otras condiciones, ASP.NET
reciclará todo el AppDomain
.
Cuando eso sucede, se anularán los hilos que haya iniciado desde ese AppDomain
, incluidos los de Application_Start
.
Mucho más sobre grupos de aplicaciones y reciclaje en esta pregunta: ¿Qué es exactamente el reciclaje de Appdominio?
Si está intentando ejecutar un proceso de larga ejecución dentro de IIS/ASP.NET
, la respuesta breve suele ser "No hacer". Para eso están los servicios de Windows.