Recibirá uno o más mensajes de error cuando intenta realizar una solicitud HTTP en una aplicación que se basa en .NET Framework 1.1 Service Pack 1

Seleccione idioma Seleccione idioma
Id. de artículo: 915599 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

en este artículo se describe mensajes de error que puede recibir cuando utiliza Microsoft .NET Framework 1.1 Service Pack 1 (SP1) a las solicitudes HTTP de creación o al llamar a un servicio Web.

Síntomas

Cuando intenta realizar una solicitud HTTP en una aplicación creada en .NET Framework, puede recibir uno o varios de los mensajes de error siguientes:
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: error inesperado de envío.
Mensaje de error 3
Se cerró la conexión subyacente: 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 puede establecer el canal seguro para SSL/TLS.
Mensaje de error 6
La operación excedió el tiempo de espera

Causa

Mensaje de error 1

Este problema se produce cuando .NET Framework no se 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 Sistema de nombres de dominio (DNS).
  • Se produce un problema 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 un HTTP solicitud. El equipo cliente no puede enviar la solicitud HTTP porque se ha cerrado la conexión o no está disponible. Este problema puede producirse cuando el equipo cliente envía muchos 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 se establece demasiado bajo. Para resolver este problema, consulte resoluciones A, D, E, F y o. El problema puede producirse también que si el servidor restablece la conexión inesperadamente, 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 .NET Framework detecta que la respuesta del servidor no cumple con 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 acerca de los encabezados HTTP, visite el siguiente sitio Web de World Wide Web Consortium:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6
Microsoft proporciona información de contacto con otros proveedores para ayudarle a encontrar soporte técnico. Esta información de contacto puede cambiar sin previo aviso. Microsoft no ofrece ninguna garantía con respecto a la exactitud de esta información de contacto con otros proveedores.

Mensaje de error 5

Este problema puede producirse cuando uno o más de las siguientes condiciones son verdaderas:
  • Estás utilizando un certificado de cliente no válido o un certificado de servidor no válido.
  • Experimenta un problema de conexión 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 se establece demasiado bajo.
  • Experimenta un problema de compatibilidad del protocolo HTTPS.
Para problemas de conexión TCP, consulte resoluciones A, D, E, F y o. Para problemas de certificado de cliente y problemas de certificado de servidor, vea resoluciones H y. Para problemas de compatibilidad de protocolo HTTPS, vea resolución j.

Mensaje de error 6

Este problema se produce cuando se alcanza el valor de tiempo de espera de cliente antes de que se produce una de las condiciones siguientes:
  • Se establece una conexión HTTP.
  • Se recibió en una respuesta HTTP del 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 lista siguiente contiene posibles soluciones que se pueden aplicar cuando se produce uno de estos problemas. No todas estas soluciones se aplican a todos estos problemas. Consulte las descripciones problema 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 .NET Framework. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
318785Cómo determinar qué versiones de .NET Framework están instalados y si se han aplicado los service packs

Resolución B

Para resolver este problema, asegúrese de que la configuración de proxy es correcta. Para ello, utilice las técnicas siguientes:
  • Utilice el método WebProxy.GetDefaultProxy estático. Para obtener más información al respecto, visite el siguiente sitio Web de Microsoft:
    http://msdn2.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy(vs.71).aspx
  • Definir un <proxy> elemento en los archivos de configuración de aplicación. Para obtener más información al respecto, visite el siguiente sitio Web de Microsoft:
    http://msdn2.microsoft.com/en-us/library/aa903369(VS.71).aspx
  • Configurar el cliente de .NET para utilizar HTTP 1.0 cambiando la propiedad HttpWebRequest.ProtocolVersion . Para obtener más información al respecto, visite el siguiente sitio Web de Microsoft:
    http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest.protocolversion(vs.71).aspx
    Nota De forma predeterminada, .NET Framework utiliza HTTP 1.1.
  • Si estás utilizando Secure Sockets Layer (SSL), asegúrese de que el proxy no está configurado para utilizar las reglas que bloquean HTTPS.
  • Si utiliza autoproxy, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    873199Cómo utilizar autoproxy en código administrado

Resolución C

Para resolver este problema, asegúrese de que la aplicación tiene permisos para realizar llamadas de red y realizar llamadas de socket. Esta solución se aplica cuando la aplicación que hace la HttpWebRequest llamar a se ejecuta dentro de una aplicación Web. Quizás tenga que conceder leer permisos para el ASPNET cuenta para que puede tener acceso a los siguientes recursos:
  • El proveedor de Microsoft WinSockProxy WS2.0 (Wspwsp.dll) archivo
  • El
    HKLM\System\CurrentControlSet\Services\DnsCache
    clave del registro
  • El
    HKLM\System\CurrentControlSet\Services\WinSock2
    clave del registro
Nota Para determinar si el proceso de trabajo ASPNET tiene los permisos necesarios, utilice la utilidad FileMon y la utilidad RegMon. Para descargar la utilidad FileMon y la utilidad RegMon, visite el siguiente sitio Web de Sysinternals:
http://technet.microsoft.com/en-us/sysinternals/default.aspx
Los productos de terceros que se analizan 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 confiabilidad de estos productos.

Resolución D

Para resolver este problema, deshabilite la característica keep-alive. En .NET Framework, establezca la propiedad HttpWebRequest.KeepAlive en FALSE. Para ello cuando se llama a un servicio Web, siga estos pasos.

Nota La característica keep-alive se requiere para la autenticación NTLM.
  1. Crear una nueva clase heredando de la clase proxy generada.
  2. Agregue un método a la clase para reemplazar el método GetWebRequest . Este cambio le permite tener acceso al objeto HttpWebRequest . Si utiliza Microsoft Visual C#, el método nuevo debe ser similar al 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 al 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. Cree una instancia de la nueva clase y, a continuación, utilice la clase nueva para llamar al método de servicio Web.

Resolución E

Para resolver este problema, establezca la propiedad ServicePointManager.MaxServicePointIdleTime inferior el valor de tiempo de espera de la conexión keep alive del servidor.

notas
  • Cuando un objeto de ServicePoint ha estado inactivo durante el tiempo especificado en la propiedad MaxIdleTime , es apto para la recolección de elementos no utilizados.
  • Asegúrese de que está establecida la propiedad ServicePointManager.MaxServicePointIdleTime antes de realizan las solicitudes HTTP. Para obtener más información acerca de la propiedad ServicePointManager.MaxSercvePointIdleTime , visite el siguiente sitio Web de Microsoft:
    http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.maxservicepointidletime(vs.71).aspx

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 administrativas y, a continuación, en Administrador de servicios de información de Internet (IIS) .
  2. Haga clic en el nombre del equipo que desea volver a configurar y, a continuación, haga clic en sitios Web .
  3. Haga clic con el botón secundario del mouse en el sitio Web que desea volver a configurar y, a continuación, haga clic en Propiedades .
  4. Escriba un nuevo valor en el tiempo de espera de conexión y, 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:
888528Una lista de los errores que se fija en .NET Framework 1.1 Service Pack 1, pero no se describen en otro lugar en artículos individuales 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:
901183Cómo llamar a un servicio Web utilizando un certificado de cliente para la autenticación en una aplicación Web ASP.NET
895971Cómo enviar un certificado de cliente mediante las clases HttpWebRequest y HttpWebResponse en Microsoft Visual C# .NET

Resolución se

Para resolver este problema, proporcione un certificado de seguridad válido para el servidor. Además, quizás pueda resolver este problema instalando el certificado de entidad emisora de certificados de raíz o corrigiendo el nombre común del certificado de servidor.Para obtener más información sobre el certificado de servidor de nombres, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
813618Alerta de seguridad: el nombre de certificado de seguridad no es válida ni coincide con el nombre del sitio
Advertencia Esta solución puede hacer que el equipo o su red sean más vulnerables a ataques de usuarios malintencionados o de software malintencionado como virus. Nos no recomendamos esta solución, pero son proporcionar esta información para que esta solución se puede implementar su propia discreción. Utilice esta solución bajo su responsabilidad.

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

Nota El método ICertificatePolicy.CheckValidationResult implementa la directiva de validación de certificados de la aplicación. Para obtener más información acerca del método ICertificatePolicy.CheckValidationResult , visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/system.net.icertificatepolicy.checkvalidationresult(vs.71).aspx
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:
823177PRB: "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 cuando actualiza el .NET Framework
importante Recomendamos que no omitir advertencias de certificado SSL en el código debido a posibles riesgos de seguridad.

Resolución J

Para resolver este problema, cambie el protocolo HTTPS de SSL para 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 "Propiedad ServicePointManager.SecurityProtocol" en el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.securityprotocol.aspx
Nota Por ejemplo, para admitir el protocolo SSL3 y el protocolo TLS1, utilizar 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:
187498Cómo deshabilitar PCT 1.0, SSL 2.0, 3.0 de SSL 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. Microsoft aplicaciones de conectada a ASP.NET que llamar a servicios Web, recomendamos que establezca un valor de 12 veces el número de procesadores. Para establecer este valor utilizando código de 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:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(vs.71).aspx
Para establecer este valor mediante los archivos de configuración de la aplicación, agregue el código siguiente en el archivo de configuración.
<connectionManagement>
  <add address="*" maxconnection="12"/>
</connectionManagement>
para obtener más información sobre cómo utilizar el <connectionmanagement> elemento, visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/aa903351(VS.71).aspx

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 implementan correctamente.Para obtener más información sobre 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:
904262La solicitud que se envía por la clase HttpWebRequest deje de responder cuando 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 de la optimización del rendimiento de ASP.NET, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
821268Contención, rendimiento deficiente y interbloqueos cuando hace solicitudes de servicio Web desde aplicaciones de ASP.NET

Resolución de N

Para resolver este problema, aumente los valores de las propiedades de tiempo de espera en el código de aplicación de 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:
http://msdn2.microsoft.com/en-us/library/cy9yd268.aspx
Para obtener más información acerca de la propiedad HttpWebRequest.ReadWriteTimeout , visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/b1w9c0s4.aspx

Resolución O

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

Nota Esta solución es eficaz si el servidor Web o el servidor proxy no admite HTTP 100-Continue encabezado. Para obtener más información sobre cómo deshabilitar HTTP 100-Continue encabezado para el equipo cliente, visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.expect100continue.aspx

Referencias

Para obtener más información acerca de consideraciones de rendimiento al realizar Web servicio llamadas desde aplicaciones conectadas en ASP.NET, visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/aa480507.aspx
Para obtener más información acerca de problemas de rendimiento y problemas de interbloqueo cuando realice Web atender las solicitudes de aplicaciones conectada con ASP.NET, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
821268Contención, rendimiento deficiente y interbloqueos cuando hace solicitudes de servicio Web desde aplicaciones de ASP.NET
Para obtener más información acerca de cómo mejorar el rendimiento de aplicaciones conectadas en ASP.NET, visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/ms998549.aspx
Para obtener más información sobre cómo mejorar el rendimiento de Web Servicios, visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/ms998562.aspx
Para obtener más información acerca de cómo crear aplicaciones seguras conectada con ASP.NET, visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/aa302408.aspx
Nota Se utiliza el protocolo de transporte TCP para las solicitudes HTTP. TCP es un protocolo confiable y 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 el comportamiento de cliente si el servidor cierra una conexión, el siguiente sitio Web de World Wide Web Consortium:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.4
Microsoft proporciona información de contacto con otros proveedores para ayudarle a encontrar soporte técnico. Esta información de contacto puede cambiar sin previo aviso. Microsoft no ofrece ninguna garantía con respecto a la exactitud de esta información de contacto con otros proveedores. Para obtener más información acerca de la utilidad FileMon y la utilidad RegMon, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
198038Herramientas útiles para problemas de paquete e implementación
Para obtener más información acerca de Monitor de red, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
148942Cómo capturar el tráfico de red con Monitor de red
812953 Cómo utilizar a Monitor de red para capturar el tráfico de red

Propiedades

Id. de artículo: 915599 - Última revisión: domingo, 8 de febrero de 2009 - Versión: 2.2
La información de este artículo se refiere a:
  • Microsoft .NET Framework 1.1 Service Pack 1
Palabras clave: 
kbmt kbtshoot kbprb KB915599 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 915599

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com