我不确定为什么会发生这种情况而且我从未明确地中止线程,所以这有点令人惊讶.但是我记录了Exceptions,我看到了:
System.Threading.ThreadAbortException - 线程正在中止.
它似乎发生在呼吁System.Threading.WaitHandle.WaitOne.我不确定这个例外有多远.我不认为我的线程会终止,因为我捕获日志并吞下错误.
有谁知道我为什么会收到这些错误?也许是我强行终止我的服务器或要求它重启?如果不是那么可能导致它们的原因是什么?
ric*_*ott 41
ASP.NET根据需要始终生成并终止工作进程.您的线程可能会被ASP.NET关闭.
旧答案:
已知问题:PRB:如果使用Response.End,Response.Redirect或Server.Transfer,则会发生ThreadAbortException
Response.Redirect ("bla.aspx", false);
Run Code Online (Sandbox Code Playgroud)
要么
try
{
Response.Redirect("bla.aspx");
}
catch (ThreadAbortException ex)
{
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*ain 40
如果您生成线程Application_Start,它们仍将在应用程序池中执行AppDomain.
如果应用程序闲置一段时间(意味着没有请求进入),或者满足某些其他条件,ASP.NET则将回收整个应用程序AppDomain.
当发生这种情况时,从中启动的任何线程AppDomain(包括来自的线程)Application_Start都将被中止.
在这个问题上有更多关于应用程序池和回收的信息:Appdomain回收到底是什么
如果你试图在其中运行一个长时间运行的过程IIS/ASP.NET,简短的回答通常是"不要".这就是Windows服务的用途.
Abh*_*arg 16
对于ASP.NET中托管的Web服务,配置属性为executionTimeout:
<configuration> <system.web>
<httpRuntime executionTimeout="360" />
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
设置此,线程中止异常将消失:)
尝试多次结束响应可能导致此错误。正如已经提到的其他答案一样,有多种方法可以结束响应(如Response.End或Response.Redirect)。如果您连续拨打多个电话,则会收到此错误消息。
我在使用Response.End后尝试使用Response.TransmitFile它时也遇到了这个错误,它似乎也结束了响应。
| 归档时间: |
|
| 查看次数: |
171994 次 |
| 最近记录: |