Приложение написано на ASP .NET 4.0 и размещено в IIS 7.5 на компьютере под управлением Windows Server 2008 R2. Пул приложений использует режим интегрированного управляемого конвейера.
Ниже приведено исключение. выбрасывается, когда на нескольких разных страницах не отображаются Есть что-нибудь очевидное общего. Я не могу воспроизвести исключение самостоятельно, но на прошлой неделе это произошло 10 раз в производственной среде.
Из трассировки стека я вижу, что исключение вызвано методом «HttpRequest.GetEntireRawContent», поэтому мне было интересно, что-то не так с запросом, например, он слишком длинный или содержит недопустимый символ.
Для ясности, это исключение не выброшено из написанного мной кода, оно находится в пространстве имен System.Web.Так что я не могу добавить попытку ... уловить это.
Я буду рад выслушать любые идеи о причинах исключения или действиях по устранению неполадок, чтобы получить дополнительную информацию.
Exception: System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Web.HttpException (0x80004005): An error occurred while communicating with the remote host. The error code is 0x80070001. ---> System.Runtime.InteropServices.COMException (0x80070001): Incorrect function. (Exception from HRESULT: 0x80070001)
at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
at System.Web.Hosting.IIS7WorkerRequest.ReadEntityCoreSync(Byte[] buffer, Int32 offset, Int32 size)
at System.Web.HttpRequest.GetEntireRawContent()
at System.Web.HttpRequest.FillInFormCollection()
at System.Web.HttpRequest.get_Form()
at System.Web.HttpRequest.get_HasForm()
at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
at System.Web.UI.Page.DeterminePostBackMode()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.report_openinghours_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
РЕДАКТИРОВАТЬ:
Как указал Лукиффер, здесь есть похожий вопрос: stackoverflow.com/questions/7825127/ Предлагаемое исправление - отключить разгрузку TCP, как я понимаю что разгрузка TCP защищает веб-сервер от множества сложных TCP. Поэтому его отключение потребует много циклов ЦП и замедлит работу веб-серверов, что, очевидно, нежелательно.
Я также не понимаю, почему разгрузка TCP заставляет IIS генерировать исключение.