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
имущество.