Task.Factory.StartNew с неперехваченными исключениями убивает w3wp?

Я только что перевел часть кода своего веб-сайта с QueueUserWorkItem на Task.Factory.StartNew

У меня есть плохой код, который вызвал исключение и в конечном итоге отключил w3wp. Запуск IIS 7.5 в Windows Server 2008 R2, x64

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

Приложение: w3wp.exe Версия Framework: v4.0.30319 Описание: Процесс был прерван из-за необработанного исключения. Информация об исключении: System.AggregateException Стек: в System.Threading.Tasks.TaskExceptionHolder.Finalize ()

Исключение: System.AggregateException

Сообщение: исключения задачи не наблюдались ни при ожидании задачи, ни при доступе к ее свойству исключения. В результате ненаблюдаемое исключение было повторно создано потоком финализатора.

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

InnerException: System.Data.SqlClient.SqlException

Я бы предположил, что исключение привело бы к созданию журнала событий, а НЕ убило бы w3wp. Это неправильное предположение?


person Visualize    schedule 20.02.2011    source источник
comment
Вроде глупый вопрос, потому что ваш вопрос в основном отвечает на ваш вопрос. Конечно, ваше предположение неверно, иначе вы бы не задавали этот вопрос. При этом я задал ваш вопрос и проголосовал за него, потому что сам этого не осознавал. Я предполагаю, что при возникновении исключения обычно существует глобальный обработчик ошибок, который улавливает ошибку. Когда вы используете новый поток с фабрикой задач, вы выходите за рамки обычной обработки ошибок ... Это то, что полезно знать ... или, возможно, вы обнаружили ошибку!   -  person John Sobolewski    schedule 20.02.2011


Ответы (1)


Необработанные исключения приводят к аварийному завершению рабочего процесса IIS. Это сделано намеренно. http://support.microsoft.com/kb/911816

Следовательно, вы должны правильно обрабатывать исключения.

person Lex Li    schedule 20.02.2011
comment
Спасибо, это то, что я искал - person Visualize; 20.02.2011