Tôi có một loại thiết lập từ xa trong ứng dụng của tôi, nơi tôi tránh TargetInvocationExceptions
và lấy ngoại lệ bên trong. Tôi gọi phương thức PrepForRemoting
bên trong trên lớp Exception
để duy trì dấu vết ngăn xếp từ phương thức được gọi.Màn hình màu vàng chết của ASP.NET - nó sẽ lấy dấu vết từ đâu?
này xuất hiện để xây dựng các vết đống tài sản một cách chính xác:
"\ r \ nServer stack trace:. \ R \ n
tại ZBooking.Environment.Services.BookingService <> c_ DisplayClass9 '1.b _5 (BookingSlot p) trong C: \ dev \ ZBookings \ core \ ZZBookings.Services \ BookingService.cs: dòng 79 \ r \ n
tại System.Linq.Enumerable.All [TSource] (Nguồn IEnumerable'1, vị từ Func'2) \ r \ n
tại ZBookings.BookingService.MoveBooking [TBookingType] (Int32 bookingId,> IEnumerable`1 bookingSlots) trong C: \ dev \ ZBooking.Client \ core \ ZBookings.Services \ BookingService.cs: dòng 79 \ r \ n \ r \ n
Ngoại lệ bị trì hoãn tại [0]: \ r \ n tại ZBookings.BookingService. <> c_ DisplayClass9`1.b _5 (BookingSlot p) trong C: \ dev \ ZBookings \ core \ ZBookings.Services \ BookingService.cs: dòng 79 \ r \ n
tại System.Linq.Enumerable .Tất cả [TSource] (nguồn IEnumerable'1, vị từ Func'2) \ r \ n
tại ZBookings.BookingService.MoveBooking [TBookingType] (Int32 bookingId, IEnumerable`1 bookingSlots) in C: \ dev \ ZBookings \ core \ ZBookings.Services \ BookingService.cs: dòng 79 "
Tuy nhiên, khi điều này được hiển thị theo tiêu chuẩn ASP.NET ye llow màn hình đó là:
[NullReferenceException: Object tài liệu tham khảo không được đặt để một thể hiện của một đối tượng.] ZBooking.ApplicationServices.MethodMarshaller.Invoke (delegate del, ZipIdentity zipIdentity, Object [] args) trong C: \ dev \ ZBooking \ core \ ZBooking.ApplicationServices \ MethodMarshaller.cs: 147 ZBooking.ApplicationServices.MethodMarshaller.Invoke (Delegate del, ZipIdentity zipIdentity, Object [] args) trong C: \ dev \ ZBooking \ core \ ZBooking.ApplicationServices \ MethodMarshaller .cs: 105 ZBooking.ApplicationServices.MethodMarshaller.Call (Func'3 del, T1 arg1, T2 arg2, ZipIdentity zipIdentity) trong C: \ dev \ ZBooking \ core \ ZBooking.ApplicationServices \ MethodMarshaller.cs: 72
.. .etc.
Gọi Server.GetLastError();
trên Application_Error in Global.asax hiển thị theo dõi ngăn xếp chính xác. Dấu vết ngăn xếp màn hình màu vàng đến từ đâu?
Bạn có chắc chắn rằng bạn không có ngoại lệ thứ hai "bao gồm" trường hợp đầu tiên không? Hai ngoại lệ dường như quá khác biệt.Bạn có thể đặt điểm ngắt tại dòng 147 của MethodMarshaler không? (và 105 và 72) và xem điều gì xảy ra? Và có lẽ bạn có thể thử làm cho trình gỡ lỗi dừng lại cho tất cả NullReferenceException. – xanatos
Đó là loại điểm. Một ngoại lệ là bao gồm một ngoại lệ khác - tôi đang ném lại ngoại lệ chính xác bên trong và sau đó viết lại dấu vết ngăn xếp của nó từ đó. Dấu vết ngăn xếp ghi lại hoạt động nhưng không xuất hiện để bong bóng lên đến YSOD. –