ASP.NET желтый экран смерти - откуда он берет трассировку стека?

В моем приложении настроен тип удаленного взаимодействия, где я избегаю TargetInvocationExceptions и захватить внутреннее исключение. Я призываю внутренний PrepForRemoting метод на Exception класс для сохранения трассировки стека из вызванного метода.

Это выглядит для правильного построения свойства трассировки стека:

"\ r \ n Сервер стека: \r\n

в ZBooking.Environment.Services.BookingService.<> c_ DisplayClass9`1.b_5 (BookingSlot p) в C:\dev\ZBookings\core\ZZBookings.Services\BookingService.cs: строка 79\r\n

в System.Linq.Enumerable.All[TSource](источник IEnumerable'1, предикат Func'2)\r\n

на ZBookings.BookingService.MoveBooking[TBookingType](Int32 bookingId, >IEnumerable`1 bookingSlots) в C:\dev\ZBooking.Client\core\ZBookings.Services\BookingService.cs: строка 79\r\n\r\n

Исключение переброшено в [0]: \r\n в ZBookings.BookingService.<> C_ DisplayClass9`1.b_5 (BookingSlot p) в C:\dev\ZBookings\core\ZBookings.Services\BookingService.cs: строка 79 \ г \ п

в System.Linq.Enumerable.All[TSource](источник IEnumerable'1, предикат Func'2)\r\n

в ZBookings.BookingService.MoveBooking [TBookingType] (Int32 bookingId, IEnumerable`1 bookingSlots) в C:\dev\ZBookings\core\ZBookings.Services\BookingService.cs: строка 79"

Однако, когда это отображается стандартным желтым экраном ASP.NET, это:

[NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.] ZBooking.ApplicationServices.MethodMarshaller.Invoke(Делегат del, ZipIdentity zipIdentity, Object[] args) в C:\dev\ZBooking\core\ZBooking.ApplicationServices\MethodMarshaller.cs:147 ZBooking.ApplicationServices.MethodMarshaller.Invoke(Делегат del, ZipIdentity zipIdentity, Object[] args) в C:\dev\ZBooking\core\ZBooking.ApplicationServices\MethodMarshaller.cs:105 ZBooking.ApplicationServices.halho.halho.lerto.Met '3 del, T1 arg1, T2 arg2, ZipIdentity zipIdentity) в C: \ dev \ ZBooking \ core \ ZBooking.ApplicationServices \ MethodMarshaller.cs: 72
...так далее.

призвание Server.GetLastError(); на Application_Error в Global.asax показана правильная трассировка стека. Откуда исходит след от желтого экрана?

1 ответ

Решение

Желтый экран смерти ASP.NET получает след стека, создавая StackTraceиз исключения. Это делается с помощью StackTrace(Exception, Boolean) конструктор. Затем он сбрасывает стек путем обхода объектов StackFrame, предоставленных StackTrace объект. Он не использует Exception.StackTrace имущество.

Другие вопросы по тегам