2011-11-28 38 views
8

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.

+1

Ver: http: // stackoverflow.com/questions/7825127/system-runtime-interopservices-comexception-incorrect-function-exception-from – lukiffer

+0

¿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

+0

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

Respuesta

0

No es posible que todavía tenga este problema, pero si otros se topan con este problema aquí hay un enlace que podría ayudar.

TechNet forum

opciones TCP Tarea de Descarga del controlador de la NIC deben fijarse en el nivel NIC physicla (el NIC del host que la red virtual externa está utilizando). Asegúrese de no deshabilitar la chimenea y pensando que está deshabilitando la descarga de tareas. En la configuración de , el controlador tiene opciones con 'descarga' en el nombre; estas son las opciones para desactivar.

  • Desactivar administración de energía en el phsycial NIC (algunos conductores ocuparemos en este).

  • Pruebe un físico Intel NIC (la menos problemática de todos con Hyper-V)

  • Compruebe que los circuitos integrados en la máquina virtual son iguales al host.

  • Compruebe si hay otros problemas con la máquina virtual, como el aumento de recursos con CPU o disco IO o cualquier otra cosa que pueda causar un bloqueo.

+0

Por favor, diga por qué cree que esta es una solución al problema. –

+0

No pretendo ser un experto solo un poco de experiencia con máquinas virtuales y algunos entornos complejos. Mi mejor idea para lo que realmente está sucediendo es que la administración de energía para el controlador de hardware está en conflicto con los servicios y procesos que requieren acceso constante e inmediato al controlador. Evitar que el controlador ahorre energía no es práctico para el entorno del servidor; lo que quiere decir que nunca ejecuté un COA en una tarjeta de red, sino que simplemente lo incluí en sus costos operativos y lo eliminé como una variable de posibles problemas en su entorno. –

Cuestiones relacionadas