Смертельное исключение, как ловить?System.Net.InternalException: системная ошибка - PullRequest
4 голосов
/ 30 мая 2011
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)

Это было перехвачено обработчиком необработанных исключений.Это происходит только изредка, но с катастрофическими результатами.Любые идеи, как на самом деле поймать этот один главы?

ОБНОВЛЕНИЕ

Теперь стало очевидно, что это происходит только тогда, когда процессор находится под исключительно высокой нагрузкой.

Ответы [ 3 ]

4 голосов
/ 30 мая 2011

Если это исключение выдается в потоке завершения ввода-вывода в основном без какого-либо вмешательства с вашей стороны, я бы склонен открыть заявку с помощью Microsoft Connect . Причина: вы запускаете асинхронную операцию ввода-вывода, которая выдает исключение, предположительно, из-за разорванного соединения в пуле потоков, которое вы не можете перехватить. Это означает, что существует вероятность того, что разорванное соединение во время асинхронной операции отключит ваше приложение, и вы ничего не сможете с этим поделать. Для меня это звучит как ошибка в рамках.

Временное решение может заключаться в размещении <legacyUnhandledExceptionPolicy enabled="1"/> в разделе <runtime> конфигурации вашего приложения. Это вернется к поведению .NET 1.0 / 1.1, где исключения, выданные в другом потоке, отличном от основного потока, не будут закрывать приложение. Смотрите также: http://msdn.microsoft.com/en-us/library/ms228965.aspx

3 голосов
/ 17 ноября 2011

У нас была такая же проблема, и мы смогли получить помощь от поддержки Microsoft по этому вопросу.Для нас это было вызвано состоянием гонки в интерфейсе winsock, вызванным тем, что мы отключили алгоритм Nagle.Возможно, вы захотите проверить мой пост в блоге, если окажетесь в такой же ситуации: Сбой исключения сериализации ASP.NET, winsock и алгоритм Nagle .

0 голосов
/ 30 мая 2011

Похоже, у вас разорвано соединение.Это будет особенно верно, если вы используете асинхронные вызовы.Каждый раз, когда вы пытаетесь получить доступ к объекту, когда соединение было разорвано, вы получите такую ​​ошибку.Вот SO статья, которая имеет немного больше об этом:

Что это за ошибка?System.Net.InternalException в Net.HttpWebRequest.SetAndOrProcessResponse

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...