Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET死亡黄屏-从哪里获取堆栈跟踪?_C#_Asp.net_Exception_Targetinvocationexception_Ysod - Fatal编程技术网

C# ASP.NET死亡黄屏-从哪里获取堆栈跟踪?

C# ASP.NET死亡黄屏-从哪里获取堆栈跟踪?,c#,asp.net,exception,targetinvocationexception,ysod,C#,Asp.net,Exception,Targetinvocationexception,Ysod,我在我的应用程序中设置了一个远程处理类型,在这里我避免targetingException并获取内部异常。我在Exception类上调用internalPrepForRemoting方法,以保留调用方法的堆栈跟踪 这似乎可以正确构造堆栈跟踪属性: “\r\n服务器堆栈跟踪:\r\n 在ZBooking.Environment.Services.BookingService.c_中显示Class9`1.b_5(bookingslotp) C:\dev\ZBookings\core\ZZBookin

我在我的应用程序中设置了一个远程处理类型,在这里我避免
targetingException
并获取内部异常。我在
Exception
类上调用internal
PrepForRemoting
方法,以保留调用方法的堆栈跟踪

这似乎可以正确构造堆栈跟踪属性:

“\r\n服务器堆栈跟踪:\r\n

在ZBooking.Environment.Services.BookingService.c_中显示Class9`1.b_5(bookingslotp) 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_中显示Class9`1.b_5(BookingSlot p) C:\dev\ZBookings\core\ZBookings.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\ZBookings\core\ZBookings.Services\BookingService.cs:第79行“

但是,当标准ASP.NET黄色屏幕显示时,它是:

[NullReferenceException:对象引用未设置为对象的实例。] C:\dev\ZBooking\core\ZBooking.ApplicationServices\MethodMarshaller.cs:147中的ZBooking.ApplicationServices.MethodMarshaller.Invoke(委托del、ZipIdentity、ZipIdentity、Object[]参数) C:\dev\ZBooking\core\ZBooking.ApplicationServices\MethodMarshaller.cs:105中的ZBooking.ApplicationServices.MethodMarshaller.Invoke(委托del、ZipIdentity、ZipIdentity、Object[]参数) C:\dev\ZBooking\core\ZBooking.ApplicationServices\MethodMarshaller.cs中的ZBooking.ApplicationServices.MethodMarshaller.Call(Func'3 del、T1 arg1、T2 arg2、ZipIdentity-ZipIdentity) ……等等


调用
Server.GetLastError()显示正确的堆栈跟踪。黄屏堆栈跟踪从何而来?

ASP.NET的死亡黄屏通过从异常构造一个来获取堆栈跟踪。它使用构造函数来实现这一点。然后,它通过遍历对象提供的对象来转储堆栈。它不使用属性。

您确定没有“覆盖”第一个异常的第二个异常吗?这两个例外似乎太不一样了。你能在MethodMarshaler的第147行设置断点吗?(以及105和72)看看会发生什么?也许您可以尝试让调试器停止所有NullReferenceException。这就是重点。一个异常覆盖了另一个异常——我重新抛出正确的内部异常,然后从那里重写它的堆栈跟踪。堆栈跟踪重写工作正常,但似乎没有达到YSOD。这听起来很有希望。它似乎可以归结为
内部静态外部void GetStackFramesInternal(StackFrameHelper sfh,int-iSkip,异常e)调用-我将查看SSCLI,看看它调用了什么方法。同时,我认为“黄色屏幕堆栈跟踪从何而来?”这个问题已经得到了回答恐怕你剩下的里程可能会更长。