致命异常,如何捕捉?System.Net.InternalException:系统错误

本文关键字:Net System InternalException 系统错误 何捕捉 异常 | 更新日期: 2023-09-27 17:57:52

System.Net.InternalException: System error.
   at System.Net.HttpWebRequest.CheckWriteSideResponseProcessing()
   at System.Net.ConnectStream.ProcessWriteCallDone(ConnectionReturnResult retur
nResult)
   at System.Net.HttpWebRequest.WriteCallDone(ConnectStream stream, ConnectionRe
turnResult returnResult)
   at System.Net.ConnectStream.CallDone(ConnectionReturnResult returnResult)
   at System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean abort
ing)
   at System.Net.ConnectStream.System.Net.ICloseEx.CloseEx(CloseExState closeSta
te)
   at System.Net.ConnectStream.CloseInternal(Boolean internalCall)
   at System.Net.HttpWebRequest.EndWriteHeaders_Part2()
   at System.Net.HttpWebRequest.EndWriteHeaders(Boolean async)
   at System.Net.HttpWebRequest.WriteHeadersCallback(WebExceptionStatus errorSta
tus, ConnectStream stream, Boolean async)
   at System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar)
   at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
   at System.Net.ContextAwareResult.Complete(IntPtr userToken)
   at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr u
serToken)
   at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32
 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
   at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32
errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

这是由未处理的异常处理程序捕获的。它只是偶尔发生,但会带来灾难性的后果。你知道怎么抓住这个家伙吗?

更新

现在很明显,只有当CPU处于异常高的负载下时,才会出现这种情况。

致命异常,如何捕捉?System.Net.InternalException:系统错误

如果在I/O完成线程上引发此异常,基本上没有您的任何干预,那么我倾向于使用Microsoft Connect打开票证。推理:您启动了一个异步I/O操作,该操作可能会抛出异常,这可能是由于线程池中自己的连接丢失所致,而您无法捕获。这意味着有一种可能性,在异步操作过程中断开的连接会导致你的应用程序瘫痪,而你对此无能为力。对我来说,这听起来像是框架中的一个错误。

临时解决方法可以是在应用程序配置的<runtime>部分中放置一个<legacyUnhandledExceptionPolicy enabled="1"/>。这将恢复到.NET 1.0/1.1的行为,在该行为中,在主线程之外的另一个线程上引发的异常不会导致应用程序崩溃。另请参阅:http://msdn.microsoft.com/en-us/library/ms228965.aspx

我们遇到了同样的问题,并得到了微软支持部门的帮助。对我们来说,这是由于我们禁用Nagle算法导致的winsockapi中的竞争条件造成的。如果你发现自己处于同样的情况,你可能想看看我的博客文章:ASP.NET序列化异常崩溃、winsock和Nagle算法。

听起来你的连接断了。如果您正在使用异步调用,则情况尤其如此。当连接被断开时,任何时候你试图访问一个对象,都会收到这样的错误。下面是一篇关于的SO文章

这个错误是什么?Net.HttpWebRequest.SetAndOrProcessResponse 中的System.Net.InternalException