应用程序是在运行Windows Server 2008 R2的计算机上的IIS 7.5中托管的ASP .NET 4.0中编写的。应用程序池使用集成管理Pipline模式。
当在几个没有任何明显共同点的不同页面上抛出以下异常。我不能自己重现这个例外,但它在上周的生产环境中发生了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)
修改
正如lukiffer所指出的,这里有一个类似的问题:stackoverflow.com/questions/7825127/建议的解决方案是关闭TCP卸载,我理解的方式是TCP卸载使网络服务器免受TCP的许多复杂性的影响。因此,将其关闭将消耗大量的CPU周期,从而减慢Web服务器的速度,这显然是不可取的。
我也不明白为什么TCP卸载会导致IIS抛出异常。
答案 0 :(得分:0)
您可能仍然遇到此问题,但如果其他人遇到此问题,则此链接可能有所帮助。
TCP任务网卡驱动程序的卸载选项应设置为 physicla NIC level(外部虚拟主机的nic) 网络正在使用)。确保你没有禁用烟囱和 认为您正在禁用任务卸载。在设置中 驱动程序是名称中“卸载”的选项 - 这些是 关闭的选项。
禁用phsycial NIC上的电源管理(某些驱动程序启用此功能)。
尝试使用物理英特尔网卡(使用Hyper-V时问题最少)
检查VM中的IC是否与主机相同。
检查虚拟机的其他问题,例如CPU或磁盘IO的资源尖峰或任何可能导致挂起的问题。