我在我的应用程序中设置了一个远程处理类型,我避免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:line 79\r\n
在 System.Linq.Enumerable.All[TSource](IEnumerable'1 源,Func'2 谓词)\r\n
在 C:\dev\ZBooking.Client\core\ZBookings.Services\BookingService.cs:line 79 中的 ZBookings.BookingService.MoveBooking[TBookingType](Int32 bookingId, >IEnumerable`1 bookingSlots)\r\n\r\n
在 [0] 处重新抛出异常:\r\n 在 ZBookings.BookingService.<>c_ DisplayClass9`1.b _5(BookingSlot p) in C:\dev\ZBookings\core\ZBookings.Services\BookingService.cs:line 79\ r\n
在 System.Linq.Enumerable.All[TSource](IEnumerable'1 源,Func'2 谓词)\r\n
在 C:\dev\ZBookings\core\ZBookings.Services\BookingService.cs:line 79 中的 ZBookings.BookingService.MoveBooking[TBookingType](Int32 bookingId, IEnumerable`1 bookingSlots)”
但是,当这由标准 ASP.NET 黄屏显示时,它是:
[NullReferenceException:对象引用未设置为对象的实例。] C:\dev\ZBooking\core\ZBooking.ApplicationServices\MethodMarshaller 中的 ZBooking.ApplicationServices.MethodMarshaller.Invoke(Delegate del, ZipIdentity zipIdentity, Object[] args)。 c:147 ZBooking.ApplicationServices.MethodMarshaller.Invoke(Delegate del, ZipIdentity zipIdentity, Object[] args) 在 C:\dev\ZBooking\core\ZBooking.ApplicationServices\MethodMarshaller.cs:105 ZBooking.ApplicationServices.MethodMarshaller.Call(Func '3 del, T1 arg1, T2 arg2, ZipIdentity zipIdentity) 在 C:\dev\ZBooking\core\ZBooking.ApplicationServices\MethodMarshaller.cs:72
...等。
在 Global.asax 中调用Server.GetLastError();
Application_Error 会显示正确的堆栈跟踪。黄色屏幕堆栈跟踪来自哪里?