écran jaune ASP.NET de la mort - où est-il obtenir la trace de la pile de?
-
27-10-2019 - |
Question
J'ai un accès distant de type mis en place dans mon application où j'évite TargetInvocationExceptions
et de saisir l'exception interne. Je appeler la méthode PrepForRemoting
interne de la classe de Exception
pour préserver la trace de la pile à partir de la méthode appelée.
Cela semble construire correctement la propriété trace de la pile:
"\ r \ nserver pile trace: \ r \ n
à ZBooking.Environment.Services.BookingService. <> C_ DisplayClass9`1.b _5 (BookingSlot p) C: \ dev \ ZBookings \ core \ \ ZZBookings.Services BookingService.cs: ligne 79 \ r \ n
à System.Linq.Enumerable.All [TSource] (source IEnumerable'1, Func'2 prédicat) \ r \ n
ZBookings.BookingService.MoveBooking [TBookingType] (Int32 bookingId,> IEnumerable`1 bookingSlots) dans C: \ dev \ ZBooking.Client \ core \ ZBookings.Services de BookingService.cs: les lignes 79 \ r \ n \ r \ n
Exception relancée à [0]: \ r \ n à ZBookings.BookingService <> c_ DisplayClass9`1.b _5 (BookingSlot p). C: \ dev \ ZBookings \ core \ \ ZBookings.Services BookingService.cs: ligne 79 \ r \ n
à System.Linq.Enumerable.All [TSource] (source IEnumerable'1, Func'2 prédicat) \ r \ n
à ZBookings.BookingService.MoveBooking [TBookingType] (Int32 bookingId, IEnumerable`1 bookingSlots) dans C: \ dev \ ZBookings \ core \ ZBookings.Services \ BookingService.cs: ligne 79"
Cependant, il est quand cela est affiché par l'écran jaune ASP.NET standard:
[NullReferenceException: objet de référence non définie à une instance d'un objet.] ZBooking.ApplicationServices.MethodMarshaller.Invoke (délégué del, ZipIdentity zipIdentity, Object [] args) dans C: \ dev \ ZBooking \ core \ ZBooking.ApplicationServices de les MethodMarshaller.cs: 147 ZBooking.ApplicationServices.MethodMarshaller.Invoke (délégué del, ZipIdentity zipIdentity, Object [] args) dans C: \ dev \ ZBooking \ core \ ZBooking.ApplicationServices de les MethodMarshaller.cs: 105 ZBooking.ApplicationServices.MethodMarshaller.Call (Func'3 del, T1 arg1, arg2 T2, ZipIdentity zipIdentity) dans C: \ dev \ ZBooking \ core \ ZBooking.ApplicationServices de les MethodMarshaller.cs: 72
... etc.
Appel Server.GetLastError();
sur Application_Error dans Global.asax montre la trace de pile correcte. Où est la trace de la pile d'écran jaune vient?
La solution
écran jaune de la mort ASP.NET obtient la trace de la pile en construisant un StackTrace(Exception, Boolean)
. Il déverse ensuite la pile en marchant StackFrame objets fournis par le StackTrace
objet. Il ne pas utiliser la propriété Exception.StackTrace
.