2013-11-27 1 views
8

При запуске MassTransit в ASP.NET. NullReferenceException выбрасывают, согласно данному вопросу сообщили здесь: Google Discussion GroupMassTransit NullReferenceException в ThreadPoolConsumerPool

Соответствующие Detail
Кто-нибудь знает, как изящно поймать исключение, когда AppDomain перезагружается?

Трассировка стека только заходит так далеко, как MassTransit DLL:

NullReferenceException in ThreadPoolConsumerPool 

Locating source for 'd:\BuildAgent-03\work\8d1373c869590c5b\src\MassTransit\Threading\ThreadPoolConsumerPool.cs'. (No checksum.) 
The file 'd:\BuildAgent-03\work\8d1373c869590c5b\src\MassTransit\Threading\ThreadPoolConsumerPool.cs' does not exist. 
Looking in script documents for 'd:\BuildAgent-03\work\8d1373c869590c5b\src\MassTransit\Threading\ThreadPoolConsumerPool.cs'... 
Looking in the projects for 'd:\BuildAgent-03\work\8d1373c869590c5b\src\MassTransit\Threading\ThreadPoolConsumerPool.cs'. 
The file was not found in a project. 
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src\'... 
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc\'... 
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl\'... 
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\'... 
The debug source files settings for the active solution indicate that the debugger will not ask the user to find the file: d:\BuildAgent-03\work\8d1373c869590c5b\src\MassTransit\Threading\ThreadPoolConsumerPool.cs. 
The debugger could not locate the source file 'd:\BuildAgent-03\work\8d1373c869590c5b\src\MassTransit\Threading\ThreadPoolConsumerPool.cs'. 
+1

Возможно, вы захотите добавить соответствующие разделы обсуждения здесь. Ответы только на ссылку не подходят для этого сайта, и я не верю, что вопросы с Link-only намного лучше. – nvoigt

+1

nvoigt - я добавил соответствующую информацию – Paul

+0

Это только подозрение, но я думаю, что Mass Transit мешает рабочему потоку пула, который ASP.NET использует для обработки запросов. У нас была аналогичная проблема с вызовом веб-сервисов из приложения ASP.NET с асинхронными делегатами - при большой нагрузке пул в конечном итоге был исчерпан, а производительность была ужасной. Это происходит при высокой нагрузке или всегда? –

ответ

1

Вы должны быть в состоянии поймать любой неперехваченное исключение в global.asax: http://msdn.microsoft.com/en-us/library/24395wz3(v=vs.100).aspx

Реализовать обработчик ошибок:

void Application_Error(object sender, EventArgs e) 

и отметьте исключение в обращении:

Server.ClearError(); 
+0

Я уже пробовал это, и он не срабатывает – Paul

+0

Если вы публикуете всю трассировку стека, возможно, она покажет, что исключение происходит до того, как приложение получит возможность подключить обработчик ошибок , В этом случае вы можете отложить инициализацию MT до тех пор, пока приложение не сможет установить. –

+0

нет, приложение определенно прошло приложение application_start и выполнялось в течение значительного периода времени каждый раз, когда это происходит. – Paul