Recibe uno o más mensajes de error cuando intenta hacer una solicitud HTTP en una aplicación creada en.NET Framework 1.1 Service Pack 1

Resumen

Este artículo describe los mensajes de error que puede recibir cuando utiliza el Service Pack 1 (SP1) de Microsoft.NET Framework 1.1 para hacer solicitudes HTTP o cuando se llama a un servicio Web.

Síntomas

Cuando intenta hacer una solicitud HTTP en una aplicación que se integra en el.NET Framework, puede recibir uno o varios de los siguientes mensajes de error:
Mensaje de error 1
Se cerró la conexión subyacente: no se puede conectar al servidor remoto.
Mensaje de error 2
Se cerró la conexión subyacente: se ha producido un error inesperado de envío.
Mensaje de error 3
Se cerró la conexión subyacente: se ha producido un error inesperado de recepción.
Mensaje de error 4
Se cerró la conexión subyacente: el servidor ha cometido una infracción de protocolo HTTP.
Mensaje de error 5
Se cerró la conexión subyacente: no se pudo establecer el canal seguro para SSL/TLS.
Mensaje de error 6
La operación ha agotado

Causa

Mensaje de error 1

Este problema se produce cuando el.NET Framework no puede establecer una conexión con el servidor remoto. Este problema puede producirse cuando uno o más de las siguientes condiciones son verdaderas:
  • Se produce un corte en la red.
  • Un servidor proxy bloquea la solicitud HTTP.
  • Se produce un problema de sistema de nombres de dominio (DNS).
  • Se produce un problema de autenticación de red.
Para resolver este problema, consulte resoluciones A, B y C.

Mensaje de error 2

Este problema se produce cuando el equipo cliente no puede enviar una solicitud HTTP. El equipo cliente no puede enviar la solicitud HTTP, ya que la conexión se ha cerrado o no está disponible. Este problema puede producirse cuando el equipo cliente envía grandes cantidades de datos. Para resolver este problema, consulte resoluciones A, D, E, F y O.

Mensaje de error 3

Este problema se produce cuando el servidor u otro dispositivo de red se cierra inesperadamente una conexión de protocolo de Control de transmisión (TCP) existente. Este problema puede producirse cuando un valor de tiempo de espera en el servidor o en el dispositivo de red está establecido demasiado bajo. Para resolver este problema, consulte resoluciones A, D, E, F y O. El problema también puede producirse que si el servidor restablece la conexión de forma inesperada, por ejemplo, si una excepción no controlada bloquea el proceso del servidor. Analizar los registros del servidor para ver si esto puede ser el problema.

Mensaje de error 4

Este problema se produce cuando el.NET Framework detecta que la respuesta del servidor no cumple con la especificación RFC de HTTP 1.1. Este problema puede producirse cuando la respuesta contiene encabezados incorrectos o delimitadores de encabezado incorrecto. Para resolver este problema, consulte resoluciones A y G.

Para obtener más información sobre encabezados HTTP, visite el siguiente sitio Web de World Wide Web Consortium:Microsoft proporciona información de contacto de terceros para ayudarle a encontrar soporte técnico. Esta información de contacto puede cambiar sin previo aviso. Microsoft no garantiza la exactitud de esta información de contacto de terceros.

Mensaje de error 5

Este problema puede producirse cuando uno o más de las siguientes condiciones son verdaderas:
  • Está utilizando un certificado de cliente no válido o un certificado de servidor no válido.
  • Experimenta un problema de conexión de TCP.
  • El equipo cliente está enviando gran cantidad de datos.
  • Un valor de tiempo de espera en el servidor o en otro dispositivo de red está establecido demasiado bajo.
  • Experimenta un problema de compatibilidad del protocolo HTTPS.
Para problemas de conexión de TCP, consulte resoluciones A, D, E, F y O. Para problemas de certificado de cliente y problemas de certificado de servidor, vea resoluciones H e I. Para problemas de compatibilidad de protocolo HTTPS, vea resolución de J.

Mensaje de error 6

Este problema se produce cuando se alcanza el valor de tiempo de espera de cliente antes de que se produzca una de las siguientes condiciones:
  • Se establece una conexión HTTP.
  • Se recibe una respuesta HTTP desde el servidor.
  • La secuencia de datos completamente se escribirá o leerá.
Para resolver este problema, consulte resoluciones A, E, K, L, M y N.

Solución

Nota: La siguiente lista contiene posibles soluciones que pueden aplicar cuando se produce uno de estos problemas. No todas estas resoluciones se aplican a todos estos problemas. Consulte las descripciones de problemas en la sección "Causa" para determinar qué resolución se aplica.

Resolución A

Para resolver este problema, asegúrese de que está utilizando la versión más reciente de la de.NET Framework.
Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
318785 cómo determinar qué versiones de los de.NET Framework están instalados y si se han aplicado los service Pack

Resolución B

Para resolver este problema, asegúrese de que la configuración de proxy es correcta. Para ello, utilice las siguientes técnicas:

Resolución de C

Para resolver este problema, asegúrese de que la aplicación tiene permisos para realizar llamadas de red y para realizar llamadas de socket. Esta resolución se aplica cuando se ejecuta la aplicación que hace la clase HttpWebRequest llamar dentro de una aplicación Web. Puede que tenga que conceder permisos de lectura a la cuenta ASPNET para que puede tener acceso a los recursos siguientes:
  • El archivo de Microsoft proveedor proxy Ws2.0 (Wspwsp.dll)
  • La clave del registro HKLM\System\CurrentControlSet\Services\DnsCache
  • La clave del registro HKLM\System\CurrentControlSet\Services\WinSock2
Nota: Para determinar si el proceso de trabajo ASPNET tiene los permisos necesarios, utilice las utilidades de FileMon y RegMon. Para descargar la utilidad FileMon y la utilidad RegMon, visite el siguiente sitio Sysinternals Web:Los productos de terceros que se indican en este artículo están fabricados por compañías independientes de Microsoft. Microsoft no otorga ninguna garantía, implícita o de otro tipo, respecto al rendimiento o la confiabilidad de estos productos.

Resolución D

Para resolver este problema, deshabilite la característica de mantenimiento. En el.NET Framework, establezca la propiedad HttpWebRequest.KeepAlive en FALSE. Para hacer esto cuando se llama a un servicio Web, siga estos pasos.

Nota: La característica de mantenimiento se requiere para la autenticación NTLM.
  1. Crear una nueva clase heredando de la clase de proxy generada.
  2. Agregar un método a la clase para reemplazar el método GetWebRequest . Este cambio le permite tener acceso al objeto HttpWebRequest . Si está utilizando Microsoft Visual C#, el nuevo método debe ser similar a la siguiente.
    class MyTestService:TestService.TestService{
    protected override WebRequest GetWebRequest(Uri uri)
    {
    HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);
    //Setting KeepAlive to false
    webRequest.KeepAlive = false;
    return webRequest;
    }
    }
    Si está utilizando Microsoft Visual Basic. NET, el nuevo método debe ser similar a la siguiente.
    Class MyTestService      Inherits TestService.TestService
    Protected Overrides Function GetWebRequest(ByVal uri As Uri) As System.Net.WebRequest
    Dim webRequest As System.Net.HttpWebRequest
    webRequest = CType(MyBase.GetWebRequest(uri), System.Net.HttpWebRequest)
    'Setting KeepAlive to false
    webRequest.KeepAlive = False
    GetWebRequest = webRequest
    End Function
    End Class
  3. Crear una instancia de la clase nueva y, a continuación, utilizar la nueva clase para llamar al método de servicio Web.

Resolución E

Para resolver este problema, establezca la propiedad ServicePointManager.MaxServicePointIdleTime a menos que el valor de tiempo de espera de la conexión de mantenimiento del servidor.

Notas:

Resolución F

Para resolver este problema, aumente el valor de tiempo de espera en el equipo servidor y en otros dispositivos de red. Para aumentar el valor de tiempo de espera en Microsoft Internet Information Services (IIS) 6.0, siga estos pasos:
  1. Haga clic en Inicio, haga clic en Panel de Control, haga clic en Herramientas administrativasy, a continuación, haga clic en
    Administrador de Internet Information Services (IIS).
  2. Haga clic en el nombre del equipo que desea configurar y, a continuación, haga clic en sitios Web.
  3. (Ratón) en el sitio Web que desea configurar y, a continuación, haga clic en Propiedades.
  4. Escriba un nuevo valor en el cuadro tiempo de espera de conexióny, a continuación, haga clic en Aceptar.
  5. En el menú archivo , haga clic en
    Salir.

Resolución G

Para evitar este problema, establezca useUnsafeHeaderParsing en True. Para obtener más información acerca de la propiedad useUnsafeHeaderParsing, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
888528 una lista de los errores que se corrigen en el Service Pack 1 de.NET Framework 1.1, pero no se describen en los artículos de Microsoft Knowledge Base

Resolución H

Para resolver este problema, proporcione un certificado de cliente válido para la aplicación.
Para obtener más información acerca de cómo utilizar certificados de cliente, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
901183 cómo llamar a un servicio Web utilizando un certificado de cliente para la autenticación en una aplicación Web de ASP.NET

895971 cómo enviar un certificado de cliente mediante las clases HttpWebRequest y HttpWebResponse en Microsoft Visual C#.

Resolución I

Para resolver este problema, proporcione un certificado de seguridad válido para el servidor. Además, es posible que pueda resolver este problema instalando el certificado de entidad emisora (CA) de raíz o corrigiendo el nombre común del certificado del servidor. Para obtener más información sobre el certificado del servidor de nombres, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Alerta de seguridad de 813618 : el nombre del certificado de seguridad no es válido o no coincide con el nombre del sitio

Advertencia: Esta solución puede hacer que su equipo o su red sean más vulnerables a los ataques de usuarios malintencionados o de software malintencionado, como virus. No recomendamos esta solución, pero proporcionamos esta información para que puede implementar esta solución temporal a su propia discreción. Utilice esta solución bajo su propia responsabilidad.

También puede revisar el código de aplicación para omitir estas advertencias de certificado. Para ello, implemente su propia interfaz interfaz ICertificatePolicy . A continuación, puede establecer la propiedad de la propiedad ServicePointManager.CertificatePolicy para usar la instancia de directiva de certificado antes de realiza la llamada al método de servicio Web.

Nota: El método ICertificatePolicy.CheckValidationResult implementa la directiva de validación de certificado de aplicación. Para obtener más información acerca del método ICertificatePolicy.CheckValidationResult , visite el siguiente sitio Web de Microsoft:Para obtener más información y un ejemplo de código, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
823177 PRB: "System.Net.WebException. Se cerró la conexión subyacente. No se pudo establecer la relación de confianza con el servidor remoto"mensaje de error al actualizar el.NET Framework

Importante: Se recomienda no Ignorar advertencias de certificado de SSL en código debido a posibles riesgos de seguridad.

Resolución J

Para resolver este problema, cambie el protocolo HTTPS de SSL para la seguridad de nivel de transporte (TLS).

Nota: Si ya utiliza TLS, cambiar el protocolo HTTPS para SSL. Para cambiar el protocolo HTTPS en el equipo cliente, consulte la sección "PropiedadServicePointManager.SecurityProtocol" en el siguiente sitio Web de Microsoft:Nota: Por ejemplo, para admitir el protocolo SSL3 y TLS1 protocolo, utilice código similar al siguiente.
ServicePointManager.SecurityProtocol= SecurityProtocolType.Ssl3|SecurityProtocolType.Tls;
Para obtener más información acerca de cómo cambiar el protocolo HTTPS en el equipo servidor, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
187498 cómo deshabilitar PCT 1.0, SSL 2.0, SSL 3.0 o TLS 1.0 en servicios de Internet Information Server

Resolución K

Para resolver este problema, aumente el valor de la propiedad maxConnection . Para ello, revisar los archivos de configuración de la aplicación o agregar código de la aplicación.

Nota: El valor predeterminado de la propiedad maxConnection es 2. Para Microsoft ASP.NET-aplicaciones conectadas que llamar a servicios Web, se recomienda configurar un valor de 12 veces el número de procesadores. Para establecer este valor mediante el código de la aplicación, utilice la propiedad ServicePointManager.DefaultConnectionLimit . Para obtener más información acerca de la propiedad ServicePointManager.DefaultConnectionLimit , visite el siguiente sitio Web de Microsoft:Para establecer este valor mediante el uso de los archivos de configuración de la aplicación, agregue el código siguiente al archivo de configuración.
<connectionManagement>  <add address="*" maxconnection="
12"/></connectionManagement>

Para obtener más información acerca de cómo utilizar el elemento < connectionManagement > , visite el siguiente sitio Web de Microsoft:

Resolución L

Para resolver este problema, asegúrese de que la configuración de tiempo de espera en el servidor y en otros dispositivos de red se implementa correctamente. Para obtener más información acerca de cómo implementar la configuración de tiempo de espera, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
904262 la solicitud que se envía por la clase HttpWebRequest puede dejar de responder cuando se utiliza la clase HttpWebRequest en una aplicación ASP.NET

Resolución M

Para resolver este problema, lea acerca de la optimización del rendimiento de ASP.NET. Para obtener más información acerca del ajuste del rendimiento de ASP.NET, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Contención, mal rendimiento e interbloqueos cuando hace solicitudes de servicios Web desde aplicaciones ASP.NET 821268

Resolución N

Para resolver este problema, aumente los valores de las propiedades de tiempo de espera en el código de la aplicación cliente. Para ello, utilice las siguientes propiedades:
  • HttpWebRequest.Timeout
  • HttpWebRequest.ReadWriteTimeout
Para obtener más información acerca de la propiedad HttpWebRequest.Timeout , visite el siguiente sitio Web de Microsoft:Para obtener más información acerca de la propiedad HttpWebRequest.ReadWriteTimeout , visite el siguiente sitio Web de Microsoft:

Resolución O

Para resolver este problema, asegúrese de que el equipo cliente no envía el HTTP 100-continuar encabezado. Además, asegúrese de que el equipo cliente no espera recibir el HTTP 100-continuar encabezado.

Nota: Esta solución es eficaz si el servidor Web o el servidor proxy no admite HTTP 100-continuar encabezado. Para obtener más información acerca de cómo deshabilitar HTTP 100-continuar encabezado para el equipo cliente, visite el siguiente sitio Web de Microsoft:

Referencias

Para obtener más información acerca de las consideraciones de rendimiento al realizar Web servicio llamadas desde aplicaciones conectadas con ASP.NET, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca de problemas de rendimiento y problemas de interbloqueo cuando realice Web atiende solicitudes de aplicaciones conectadas con ASP.NET, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Contención, mal rendimiento e interbloqueos cuando hace solicitudes de servicios Web desde aplicaciones ASP.NET 821268

Para obtener más información acerca de cómo mejorar el rendimiento de aplicaciones conectadas con ASP.NET, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca de cómo mejorar el rendimiento de los servicios Web, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca de cómo crear aplicaciones conectadas con ASP.NET seguras, visite el siguiente sitio Web de Microsoft:Nota: El protocolo de transporte TCP se utiliza para las solicitudes HTTP. TCP es un protocolo fiable orientado a la conexión. Sin embargo, si una conexión TCP se cierra inesperadamente, la aplicación vuelve a intentar la solicitud. Para obtener más información acerca del protocolo TCP y un comportamiento de cliente si el servidor cierra una conexión, visite el siguiente sitio Web de World Wide Web Consortium:Microsoft proporciona información de contacto de terceros para ayudarle a encontrar soporte técnico. Esta información de contacto puede cambiar sin previo aviso. Microsoft no garantiza la exactitud de esta información de contacto de terceros.
Para obtener más información acerca de las utilidades de FileMon y RegMon, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
198038 herramientas útiles para cuestiones de empaquetado y distribución

Para obtener más información acerca del Monitor de red, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
148942 cómo capturar el tráfico de red con Monitor de red

812953 cómo utilizar a Monitor de red para capturar tráfico de red

Propiedades

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

Comentarios