La aplicación está escrita en ASP .NET 4.0 alojado en IIS 7.5 en el equipo que ejecuta Windows Server 2008 R2. El grupo de aplicaciones usa el modo de línea administrada integrada.Aplicación web ASP.NET 4.0 que arroja "Función incorrecta. (Excepción de HRESULT: 0x80070001)"
La excepción a continuación se produce cuando se encuentra en varias páginas diferentes que no tienen nada en común. No puedo reproducir la excepción yo mismo, pero sucedió 10 veces la semana pasada en el entorno de producción.
Desde el Stack Trace Veo que la excepción arrojó el método "HttpRequest.GetEntireRawContent", por lo que me preguntaba si hay algún problema con la solicitud, como que es demasiado largo o que contiene un carácter no válido.
Para que quede claro, esta excepción es no lanzada desde el código que he escrito, es desde dentro del espacio de nombres System.Web. Entonces no puedo agregar una oportunidad ... atraparlo.
Me agradaría cualquier idea sobre la causa de la excepción o los pasos de solución de problemas para obtener más información.
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)
EDIT:
Como ha señalado lukiffer hay una pregunta similar aquí: stackoverflow.com/questions/7825127/ La solución sugerida es apagar la descarga TCP, la manera en que yo entiendo es que la descarga TCP protege el servidor web de una gran parte de la complejidad de TCP. Por lo tanto, apagarlo consumiría una gran cantidad de ciclos de CPU, por lo que reduciría la velocidad de los servidores web, lo que obviamente no es deseable.
Tampoco entiendo por qué la descarga de TCP provocaría que IIS lanzara una excepción.
Ver: http: // stackoverflow.com/questions/7825127/system-runtime-interopservices-comexception-incorrect-function-exception-from – lukiffer
¿Se puede publicar el código dentro de 'report_openinghours.aspx.cs' que está llamando al servicio remoto/fuente de datos, incluidas todas las llamadas COM y objetos – Kane
El código dentro de 'report_openinghours.aspx.cs' no llama a un servicio remoto/fuente de datos, ni ninguna llamada COM u objeto. Parece que el código que utiliza un objeto COM se encuentra en la clase IIS7WorkerRequest. – user1069816