Recebe uma ou mais mensagens de erro quando tenta efectuar um pedido de HTTP numa aplicação criada no .NET Framework 1.1 Service Pack 1

Traduções de Artigos Traduções de Artigos
Artigo: 915599 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo descreve mensagens de erro que poderá receber quando utiliza o Microsoft .NET Framework 1.1 Service Pack 1 (SP1) para criar pedidos de HTTP ou quando contactar um serviço Web.

Sintomas

Quando tenta efectuar um pedido de HTTP numa aplicação criada no .NET Framework, poderá receber um ou mais das seguintes mensagens de erro:
Mensagem de erro 1
A ligação subjacente foi fechada: não é possível ligar ao servidor remoto.
Mensagem de erro 2
A ligação subjacente foi fechada: Ocorreu um erro inesperado num envio.
Mensagem de erro 3
A ligação subjacente foi fechada: Ocorreu um erro inesperado numa recepção.
Mensagem de erro 4
A ligação subjacente foi fechada: O servidor efectuou uma violação de protocolo HTTP.
Mensagem de erro 5
A ligação subjacente foi fechada: não foi possível estabelecer canal seguro para SSL/TLS.
Mensagem de erro 6
A operação foi excedido

Causa

Mensagem de erro 1

Este problema ocorre quando o .NET Framework não é possível estabelecer uma ligação ao servidor remoto. Este problema poderá ocorrer quando um ou mais das seguintes condições se verificar:
  • Ocorre uma falha de rede.
  • Um servidor proxy bloqueia o pedido de HTTP.
  • Ocorre um problema do sistema de nomes de domínio (DNS, Domain Name System).
  • Ocorre um problema de autenticação de rede.
Para resolver este problema, consulte resoluções A, B e C.

Mensagem de erro 2

Este problema ocorre quando o computador cliente não consegue enviar HTTP pedido. O computador cliente não pode enviar o pedido de HTTP, porque a ligação foi fechada ou não está disponível. Este problema poderá ocorrer quando o computador cliente está a enviar muitos dados. Para resolver este problema, consulte resoluções A D, E, F e O.

Mensagem de erro 3

Este problema ocorre quando o servidor ou outro dispositivo de rede fecha inesperadamente uma ligação de TCP (Transmission Control Protocol) existente. Este problema poderá ocorrer quando um valor de limite de tempo no servidor ou do dispositivo de rede tiver uma definição demasiado baixo. Para resolver este problema, consulte resoluções A D, E, F e O. O problema também pode ocorrer se o servidor repõe a ligação inesperadamente, tal como se uma excepção não processada falha o processo do servidor. Analise os registos do servidor para ver se esta pode ser o problema.

Mensagem de erro 4

Este problema ocorre quando o .NET Framework detecta que a resposta do servidor não está em conformidade com HTTP 1.1 RFC. Este problema poderá ocorrer quando a resposta contém cabeçalhos incorrectos ou delimitadores de cabeçalho incorrecto. Para resolver este problema, consulte resoluções A e g.

Para obter mais informações sobre os cabeçalhos de HTTP, visite o seguinte na World Wide Web Consortium Web site:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6
Microsoft fornece informações de contactos outros fabricantes para ajudar a encontrar suporte técnico. Poderá ser alterado estas informações de contacto sem aviso prévio. Microsoft não garante a precisão destas informações de contacto outros fabricantes.

Mensagem de erro 5

Este problema poderá ocorrer quando um ou mais das seguintes condições se verificar:
  • Está a utilizar um certificado de cliente inválido ou um certificado de servidor inválido.
  • Tem um problema de ligação TCP.
  • O computador cliente está a enviar muitos dados.
  • Uma definição de limite de tempo no servidor ou noutro dispositivo de rede é definida demasiado baixa.
  • Tem um problema de compatibilidade de protocolo HTTPS.
Para problemas de ligação TCP, consulte resoluções A D, E, F e O. Para problemas de certificados de cliente e problemas de certificados de servidor, consulte resoluções H e I. Para problemas de compatibilidade de protocolo HTTPS, consulte Resolução j.

Mensagem de erro 6

Este problema ocorre quando o valor do cliente de tempo limite é atingido antes de ocorre uma das seguintes condições:
  • É estabelecida uma ligação HTTP.
  • É recebida uma resposta HTTP a partir do servidor.
  • O fluxo de dados é completamente escrito ou leitura.
Para resolver este problema, consulte resoluções A, E, K, L, M e ENTER.

Resolução

Nota A lista seguinte contém resoluções possíveis que poderão aplicar quando ocorre um destes problemas. Nem todos os estas resoluções se aplicam a todos os estes problemas. Consulte as descrições de problema na secção "Causa" para determinar se aplica a resolução.

A resolução

Para resolver este problema, certifique-se de que está a utilizar a versão mais recente do .NET Framework. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
318785Como determinar que versões do .NET Framework são instalados e se service packs foram aplicados

Resolução de B

Para resolver este problema, certifique-se de que as definições de proxy estão correctas. Para o fazer, utilize as seguintes técnicas:
  • Utilize o método WebProxy.GetDefaultProxy estático. Para mais informações, visite o seguinte Web site da Microsoft:
    http://msdn2.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy(vs.71).aspx
  • Definir um <proxy> elemento os ficheiros de configuração da aplicação. Para mais informações, visite o seguinte Web site da Microsoft:
    http://msdn2.microsoft.com/en-us/library/aa903369(VS.71).aspx
  • Configure o cliente .NET para utilizar HTTP 1.0, alterando a propriedade HttpWebRequest.ProtocolVersion . Para mais informações, visite o seguinte Web site da Microsoft:
    http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest.protocolversion(vs.71).aspx
    Nota Por predefinição, o .NET Framework utiliza HTTP 1.1.
  • Se estiver a utilizar (Secure Sockets Layer), certifique-se de que o proxy não está configurado para utilizar as regras que estão a bloquear o HTTPS.
  • Se estiver a utilizar autoproxy, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
    873199Como utilizar autoproxy em código gerido

Resolução C

Para resolver este problema, certifique-se de que a aplicação tem permissões para efectuar chamadas de rede e para efectuar chamadas de socket. Esta resolução se aplica quando executa a aplicação que efectua HttpWebRequest chamada dentro de uma aplicação Web. Poderá ter de ler de conceder permissões para o ASPNET conta para que possa aceder os seguintes recursos:
  • O Microsoft WinSockProxy WS2.0 Provider (Wspwsp.dll) ficheiros
  • HKLM\System\CurrentControlSet\Services\DnsCache
    chave de registo
  • HKLM\System\CurrentControlSet\Services\WinSock2
    chave de registo
Nota Para determinar se o processo de trabalho ASPNET tem as permissões necessárias, use o utilitário FileMon e o utilitário RegMon. Para transferir o utilitário FileMon e o utilitário RegMon, visite o seguinte Web site da Sysinternals:
http://technet.microsoft.com/en-us/sysinternals/default.aspx
Os produtos de outros fabricantes explicado neste artigo são fabricados por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, expressa ou implícita, relativamente ao desempenho ou fiabilidade destes produtos.

Resolução D

Para resolver este problema, desactive a funcionalidade keep-alive. No .NET Framework, defina a propriedade HttpWebRequest.KeepAlive como FALSE. Para efectuar este procedimento quando chama um serviço Web, siga estes passos.

Nota A funcionalidade de keep-alive é necessária para a autenticação NTLM.
  1. Crie uma nova classe, herdar da classe proxy gerado.
  2. Adicione um método à classe para substituir o método GetWebRequest . Esta alteração permite-lhe aceder ao objecto HttpWebRequest . Se estiver a utilizar Microsoft Visual C#, o método novo tem de ser semelhante ao seguinte.
    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;
        }
    }
    se estiver a utilizar o Microsoft Visual Basic. NET, o método novo tem de ser semelhante ao seguinte.
    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. Crie uma instância da classe nova e, em seguida, utilizar a nova classe para chamar o método de serviço Web.

Resolução E

Para resolver este problema, defina a propriedade ServicePointManager.MaxServicePointIdleTime para inferior ao valor limite de tempo da ligação keep-alive servidor.

notas
  • Quando um objecto ServicePoint tiver estado inactivo durante o tempo que é especificado na propriedade MaxIdleTime , é elegível para recolha de lixo.
  • Certifique-se que a propriedade ServicePointManager.MaxServicePointIdleTime está definida antes de serem efectuados quaisquer pedidos HTTP. Para mais informações sobre a propriedade ServicePointManager.MaxSercvePointIdleTime , visite o seguinte Web site da Microsoft:
    http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.maxservicepointidletime(vs.71).aspx

Resolução F

Para resolver este problema, aumente o valor limite de tempo no computador servidor e em outros dispositivos de rede. Para aumentar o valor de limite de tempo no Microsoft (IIS) 6.0, siga estes passos:
  1. Clique em Iniciar , clique em Painel de controlo , clique em Ferramentas administrativas e, em seguida, clique em Gestor dos serviços de informação Internet (IIS) .
  2. Clique no nome do computador que pretende reconfigurar e, em seguida, clique em Web Sites .
  3. Clique com o botão direito do rato no Web site que pretende reconfigurar e, em seguida, clique em Propriedades .
  4. Escreva um novo valor no tempo limite de ligação e, em seguida, clique em OK .
  5. No menu ficheiro , clique em Sair .

Resolução G

Para contornar este problema, defina useUnsafeHeaderParsing como Verdadeiro .Para obter mais informações sobre a propriedade useUnsafeHeaderParsing, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
888528Uma lista de erros que são corrigidos no .NET Framework 1.1 Service Pack 1, mas não são descritos noutro local nos artigos da base de dados de conhecimento da Microsoft individuais

Resolução H

Para resolver este problema, forneça um certificado de cliente válido para a aplicação. Para obter mais informações sobre como utilizar certificados de cliente, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
901183Como chamar um serviço Web utilizando um certificado de cliente para autenticação numa aplicação Web do ASP.NET
895971Como enviar um certificado de cliente utilizando as classes HttpWebRequest e HttpWebResponse no Microsoft Visual C# .NET

Resolução

Para resolver este problema, forneça um certificado de segurança válido para o servidor. Além disso, poderá conseguir resolver este problema instalando o certificado de autoridade (AC) de certificação de raiz ou corrigindo o nome comum do certificado de servidor.Para obter mais informações sobre o certificado do servidor de nomes, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
813618Alerta de segurança: O nome do certificado de segurança é inválido ou não corresponde ao nome do site
aviso Esta medida pode tornar o computador ou a rede mais vulnerável a ataques de utilizadores mal intencionados ou software malicioso como vírus. A Microsoft não recomenda esta medida, mas fornece estas informações para que o utilizador pode implementá-la à sua própria responsabilidade. Usar esta solução por sua conta e risco.

Também pode rever o código de aplicação para ignorar estes avisos de certificado. Para efectuar este procedimento, implementa a suas próprias interface ICertificatePolicy . Em seguida, pode definir a propriedade ServicePointManager.CertificatePolicy para utilizar a instância de política de certificados antes da Web é efectuada a chamada de método de serviço.

Nota O método ICertificatePolicy.CheckValidationResult implementa a política de validação de certificados de aplicação. Para mais informações sobre o método ICertificatePolicy.CheckValidationResult , visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/system.net.icertificatepolicy.checkvalidationresult(vs.71).aspx
Para mais informações e um exemplo de código, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
823177PROBLEMA: "System.Net.WebException. A ligação subjacente foi fechada. Mensagem de erro não conseguiu estabelecer a relação de fidedignidade com o servidor remoto"quando actualiza o .NET Framework
importante Recomendamos que não ignorar avisos de certificado SSL no código devido a possíveis riscos de segurança.

Resolução J

Para resolver este problema, altere o protocolo HTTPS de SSL para o TLS (Transport Level Security).

Nota Se já utilizar TLS, altere o protocolo HTTPS para SSL. Para alterar o protocolo HTTPS no computador cliente, consulte a secção "ServicePointManager.SecurityProtocol propriedade" no seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.securityprotocol.aspx
Nota Por exemplo, para suportar o protocolo SSL3 e o protocolo TLS1, utilize código semelhante ao seguinte.
ServicePointManager.SecurityProtocol= SecurityProtocolType.Ssl3|SecurityProtocolType.Tls;
Para obter mais informações sobre como alterar o protocolo HTTPS no computador servidor, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
187498Como desactivar PCT 1.0, SSL 2.0, 3.0 SSL ou TLS 1.0 no Internet Information Services

Resolução K

Para resolver este problema, aumente o valor da propriedade maxConnection . Para o fazer, reveja os ficheiros de configuração para a aplicação ou adicionar código da aplicação.

Nota O valor predefinido da propriedade maxConnection é 2. Para Microsoft ligado ao ASP.NET aplicações que chamem serviços Web, recomendamos que defina um valor de 12 vezes o número de processadores. Para definir este valor utilizando o código da aplicação, utilize a propriedade ServicePointManager.DefaultConnectionLimit . Para mais informações sobre a propriedade ServicePointManager.DefaultConnectionLimit , visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(vs.71).aspx
Para definir este valor utilizando ficheiros de configuração para a aplicação, adicione o seguinte código para o ficheiro de configuração.
<connectionManagement>
  <add address="*" maxconnection="12"/>
</connectionManagement>
para mais informações sobre como utilizar o <connectionmanagement> elemento, visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/aa903351(VS.71).aspx

Resolução geral

Para resolver este problema, certifique-se de que as definições de limite de tempo no servidor e em outros dispositivos de rede estão correctamente implementadas.Para obter mais informações sobre como implementar definições de limite de tempo, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
904262O pedido enviado pela classe HttpWebRequest poderá deixar de responder quando utiliza a classe HttpWebRequest uma aplicação do ASP.NET

Resolução M

Para resolver este problema, leia acerca de optimização do desempenho do ASP.NET.Para obter mais informações sobre optimização do desempenho do ASP.NET, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
821268Contenção, desempenho fraco e bloqueios quando efectua pedidos de serviço Web de aplicações do ASP.NET

Resolução N

Para resolver este problema, aumente os valores das propriedades do limite de tempo no código de aplicação de cliente. Para o fazer, utilize as seguintes propriedades:
  • HttpWebRequest.Timeout
  • HttpWebRequest.ReadWriteTimeout
Para mais informações sobre a propriedade HttpWebRequest.Timeout , visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/cy9yd268.aspx
Para mais informações sobre a propriedade HttpWebRequest.ReadWriteTimeout , visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/b1w9c0s4.aspx

Resolução O

Para resolver este problema, certifique-se de que o computador cliente não envia o HTTP 100 - Continue cabeçalho. Além disso, certifique-se de que o computador cliente não espera receber o HTTP 100-Continue cabeçalho.

Nota Esta resolução é eficaz se o servidor Web ou o servidor proxy não suporta o HTTP 100-Continue cabeçalho. Para mais informações sobre como desactivar o HTTP 100-Continue cabeçalho para o computador cliente, visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.expect100continue.aspx

Referências

Para obter mais informações sobre considerações de desempenho quando fizer Web serviço chamadas de aplicações ligadas à ASP.NET, visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/aa480507.aspx
Para obter mais informações sobre problemas de desempenho e problemas de bloqueio quando efectuar Web processar pedidos de aplicações ASP.NET ligados, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
821268Contenção, desempenho fraco e bloqueios quando efectua pedidos de serviço Web de aplicações do ASP.NET
Para mais informações sobre como melhorar o desempenho das aplicações ligadas à ASP.NET, visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/ms998549.aspx
Para mais informações sobre como melhorar o desempenho da Web serviços, visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/ms998562.aspx
Para mais informações sobre como criar aplicações seguras ligado ao ASP.NET, visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/aa302408.aspx
Nota O protocolo de transporte TCP é utilizado para pedidos de HTTP. TCP é um protocolo fiável, orientado para ligações. No entanto, se uma ligação TCP é fechado inesperadamente, a aplicação repete o pedido. Para mais informações sobre o protocolo TCP e sobre o comportamento de cliente se o servidor fecha uma ligação, visite o seguinte na World Wide Web Consortium site:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.4
Microsoft fornece informações de contactos outros fabricantes para ajudar a encontrar suporte técnico. Poderá ser alterado estas informações de contacto sem aviso prévio. Microsoft não garante a precisão destas informações de contacto outros fabricantes. Para obter mais informações sobre o utilitário FileMon e o utilitário RegMon, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
198038Ferramentas úteis para problemas de pacote e implementação
Para obter mais informações sobre o Monitor de rede, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
148942Como capturar tráfego de rede com o Monitor de rede
812953 Como utilizar o Monitor de rede para capturar tráfego de rede

Propriedades

Artigo: 915599 - Última revisão: 8 de fevereiro de 2009 - Revisão: 2.2
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.1 Service Pack 1
Palavras-chave: 
kbmt kbtshoot kbprb KB915599 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 915599

Submeter comentários

 

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