REVISIÓN: El mensaje de error intermitente "se ha terminado la conexión" cuando llama a un servicio Web de ASP.NET

Síntomas

Cuando se llama a un servicio Web de Microsoft ASP.NET desde una aplicación ASP.NET, puede recibir intermitentemente el mensaje de error siguiente:
Se cerró la conexión subyacente: se ha producido un error inesperado de envío.
La pila de llamadas es similar al siguiente:
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. At System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request) at 
System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request) at
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at
...

Solución

Ahora hay una revisión compatible de Microsoft. Sin embargo, se pretende corregir el problema que se describe en este artículo. Aplíquela sólo a sistemas que experimenten este problema específico. Esta revisión puede ser sometida a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere al próximo service pack de Microsoft.NET Framework que contenga esta revisión.

Para resolver este problema inmediatamente, póngase en contacto con los servicios de soporte técnico de Microsoft para obtener la revisión. Para obtener una lista completa de números de teléfono de los servicios de soporte al cliente de Microsoft e información acerca de los costos de soporte técnico, visite el siguiente sitio Web de Microsoft:Nota: En casos especiales, los costos derivados normalmente de las llamadas al soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft determina que una actualización específica resolverá el problema. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con la actualización en cuestión.

La versión en inglés de esta revisión tiene los atributos de archivo (o atributos del archivo más reciente) mostrados en la tabla siguiente. Las fechas y horas de estos archivos se muestran en la hora Universal coordinada (UTC). Al ver la información del archivo, se convierte en hora local. Para encontrar la diferencia entre la hora UTC y la hora local, utilice la ficha Zona horaria en el elemento de Fecha y hora del Panel de control.
   Date         Time   Version       Size       File name                    Platform
----------------------------------------------------------------------------------
01-May-2003 12:48 1.0.3705.426 20,480 Perfcounter.dll X86
01-May-2003 12:48 1.0.3705.426 1,175,552 System.dll X86
01-May-2003 12:48 1.0.3705.426 311,296 System.runtime.remoting.dll X86
01-May-2003 12:48 1.0.3705.426 503,808 System.web.services.dll X86
Esta revisión se incluye en.NET Framework 1.0 Service Pack 3 y en el Service Pack 1 de.NET Framework 1.1.

Para obtener más información acerca de cómo obtener el service pack más reciente de.NET Framework 1.0, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

318836 cómo obtener el service pack más reciente de.NET Framework 1.0

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Más información

El mensaje de error que se menciona en la sección "Síntomas" puede producirse también por razones válidas. Por ejemplo, la conexión subyacente puede haber sido cerrada por razones que escapan del control del cliente. En tales circunstancias, el.NET Framework de Microsoft se comporta correctamente.

Por ejemplo, si se alojan los servicios Web que se llaman en un software o en un entorno de equilibrio de carga de hardware que contiene los servidores compatibles con HTTP 1.1 y el mantenimiento de conexiones activas, la conexión puede haya terminado en el momento en que el cliente intenta volver a utilizar la conexión. Si este error persiste después de aplicar esta revisión, pruebe las siguientes soluciones:
  • Configurar el sitio Web que aloja los servicios Web para que no utilice conexiones persistentes. Para ello, siga estos pasos:
    1. Abra la consola de administración de Microsoft Internet Information Server (IIS) y busque el servidor Web.
    2. Haga clic en la ficha sitio Web de la página de Propiedades del sitio Web.
    3. Haga clic para desactivar la casilla de verificación Habilitar mantenimiento de conexiones abiertas de HTTP .
  • Compruebe que el equilibrio de carga de hardware o software está configurado correctamente para sus necesidades de aplicación.
  • Si no tiene control sobre el entorno del servidor que aloja los servicios Web que están llamando, tendrá que deshabilitar el mantenimiento de conexiones activas en el cliente. Para ello, siga estos pasos:
    1. Establezca la propiedad de actividad de la
      Clase HttpWebRequest en false.
    2. Reemplace el método HttpWebRequest en el archivo Reference.cs generado por Microsoft Visual Studio .NET para el proxy de cliente de Web. El código siguiente reemplaza el método HttpWebRequest .
      protected override WebRequest GetWebRequest(Uri uri) {
      HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);

      webRequest.KeepAlive = false;

      return webRequest;
      }

Referencias

Para obtener más información acerca de cómo obtener el Service Pack 1 de.NET Framework 1.1, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

885055 cómo obtener Microsoft.NET Framework 1.1 Service Pack 1

Propiedades

Id. de artículo: 819450 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios