Task.Factory.StartNew与未捕获的异常杀死w3wp?

时间:2011-02-20 01:41:16

标签: c# iis c#-4.0 concurrency w3wp

我刚将部分网站代码从使用QueueUserWorkItem转换为Task.Factory.StartNew

我有一些错误的代码抛出异常,它最终关闭了w3wp。在Windows Server 2008 R2上运行IIS 7.5,x64

                Task.Factory.StartNew(() =>
                {
                    MethodThatThrowsException();
                }
  

应用程序:w3wp.exe   框架版本:v4.0.30319   描述:由于未处理的异常,进程终止。   异常信息:System.AggregateException   堆:      在System.Threading.Tasks.TaskExceptionHolder.Finalize()

     

异常:System.AggregateException

     

消息:通过等待任务或访问其异常属性,未观察到任务的异常。结果,终结器线程重新抛出了未观察到的异常。

     

StackTrace:在System.Threading.Tasks.TaskExceptionHolder.Finalize()

     

InnerException:System.Data.SqlClient.SqlException

我会假设异常会产生一个事件日志而 NOT 已经杀死了w3wp。这是一个错误的假设吗?

1 个答案:

答案 0 :(得分:9)

未处理的异常导致IIS工作进程崩溃。这是设计的。 http://support.microsoft.com/kb/911816

因此,您应该正确处理异常。