我有一個遠程處理類型設置在我的應用程序,我避免TargetInvocationExceptions
並搶內部例外。我調用Exception
類的內部PrepForRemoting
方法來保存調用方法的堆棧跟蹤。ASP.NET的黃色死亡屏幕 - 它從哪裏得到堆棧跟蹤?
這似乎正確地構造堆棧跟蹤屬性:
「\ r \ n服務器堆棧跟蹤:\ r \ n
在ZBooking.Environment.Services.BookingService <> C_ DisplayClass9 `1.B _5(BookingSlot p)在 C:\ dev的\ ZBookings \芯\ 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 \芯\ ZBookings.Services \ BookingService.cs:線79 \ r \ n \ r \ n
在ZBookings.BookingService處重新排列在[0]處的異常:\ r \ n。 <> C_ DisplayClass9`1.b _5(BookingSlot P)在 C:\ dev的\ ZBookings \芯\ ZBookings.Services \ BookingService.cs:線79 \ r \ n
在System.Linq.Enumerable 。所有[TSource](IEnumerable'1源,Func'2謂詞個)\ r \ n
在ZBookings.BookingService.MoveBooking [TBookingType](的Int32 bookingId,IEnumerable`1 bookingSlots)在 C:\ dev的\ ZBookings \ core \ ZBookings.Services \ BookingService.cs:line 79「
但是,當這個由標準的ASP.NET顯示的時候llow屏幕,它是:
[NullReferenceException異常:對象沒有設置爲一個對象的一個實例。] ZBooking.ApplicationServices.MethodMarshaller.Invoke(代表德爾,ZipIdentity zipIdentity,對象[]參數)在C:\在C:\ dev \ ZBooking \ core \ ZBooking.ApplicationServices \ MethodMarshaller中使用ZBooking.ApplicationServices.MethodMarshaller.Invoke(Delegate del,ZipIdentity zipIdentity,Object [] args)在C:\ dev \ ZBooking \ core \ ZBooking.ApplicationServices \ MethodMarshaller.cs:72
.cs:105 ZBooking.ApplicationServices.MethodMarshaller.Call(Func'3 del,T1 arg1,T2 arg2,ZipIdentity zipIdentity) 。等等。
在Global.asax中調用Server.GetLastError();
Application_Error顯示正確的堆棧跟蹤。黃色屏幕堆棧跟蹤來自哪裏?
你確定你沒有第二個例外「覆蓋」第一個嗎?這兩個例外似乎有太大的不同。你可以在MethodMarshaler的第147行放置一個斷點嗎? (105和72),看看會發生什麼?也許你可以試着讓調試器停止所有的NullReferenceException。 – xanatos 2011-03-22 13:12:01
這點很重要。一個例外是覆蓋另一個 - 我重新拋出正確的內部異常,然後從那裏重寫它的堆棧跟蹤。堆棧跟蹤重新寫入,但似乎沒有起泡到YSOD。 – 2011-03-28 17:32:48