Você recebe uma ou mais mensagens de erro quando você tenta fazer uma solicitação HTTP em um aplicativo que se baseia no .NET Framework 1.1 Service Pack 1

Traduções deste artigo Traduções deste artigo
ID do artigo: 915599 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo descreve erro mensagens que você pode receber quando você usa o Microsoft .NET Framework 1.1 Service Pack 1 (SP1) para criar solicitações HTTP ou quando você chamar um serviço da Web.

Sintomas

Quando você tenta fazer uma solicitação HTTP em um aplicativo que é criado no .NET Framework, poderá receber uma ou mais das seguintes mensagens de erro:
Mensagem de erro 1
A conexão subjacente foi fechada: não é possível se conectar ao servidor remoto.
Mensagem de erro 2
A conexão subjacente foi fechada: Ocorreu um erro inesperado em um envio.
Mensagem de erro 3
A conexão subjacente foi fechada: Ocorreu um erro inesperado em um recebimento.
Mensagem de erro 4
A conexão subjacente foi fechada: O servidor cometeu uma violação de protocolo HTTP.
Mensagem de erro 5
A conexão subjacente foi fechada: não foi possível estabelecer canal seguro para SSL/TLS.
Mensagem de erro 6
A operação foi esgotado

Causa

Mensagem de erro 1

Esse problema ocorre quando o .NET Framework não é possível estabelecer uma conexão com o servidor remoto. Esse problema pode ocorrer quando um ou mais das seguintes condições forem verdadeiras:
  • Ocorre uma interrupção de rede.
  • Um servidor proxy bloqueia a solicitação HTTP.
  • Um problema de nome de domínio (DNS).
  • Ocorrer um problema de autenticação de rede.
Para resolver esse problema, consulte resoluções A, B e C.

Mensagem de erro 2

Esse problema ocorre quando o computador cliente não é possível enviar um HTTP solicitação. O computador cliente não pode enviar a solicitação HTTP porque a conexão foi fechada ou não está disponível. Esse problema pode ocorrer quando o computador cliente está enviando grandes quantidades de dados. Para resolver esse problema, consulte resoluções A, D, E, F e O.

Mensagem de erro 3

Esse problema ocorre quando o servidor ou outro dispositivo de rede fecha inesperadamente uma conexão TCP (Transmission Control Protocol) existente. Esse problema pode ocorrer quando um valor de tempo limite no servidor ou no dispositivo de rede é definido como muito baixo. Para resolver esse problema, consulte resoluções A, D, E, F e O. O problema também pode ocorrer se o servidor reinicia inesperadamente a conexão, como se uma exceção não tratada falha o processo do servidor. Analise os logs do servidor para ver se isso pode ser o problema.

Mensagem de erro 4

Esse problema ocorre quando o .NET Framework detecta que a resposta do servidor não é compatível com HTTP 1.1 RFC. Esse problema pode ocorrer quando a resposta contém cabeçalhos incorretos ou delimitadores de cabeçalho incorreto. Para resolver esse problema, consulte resoluções A e g.

Para obter mais informações sobre cabeçalhos HTTP, visite o seguinte site do World Wide Web Consortium:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6
A Microsoft fornece terceiros informações de contatos para ajudá-lo a encontrar suporte técnico. Essa informações de contatos podem ser alteradas sem aviso prévio. A Microsoft não garante a precisão dessas informações contatos de terceiros.

Mensagem de erro 5

Esse problema pode ocorrer quando um ou mais das seguintes condições forem verdadeiras:
  • Você está usando um certificado de cliente inválido ou um certificado de servidor inválido.
  • Você está tendo um problema de conexão TCP.
  • O computador cliente está enviando grandes quantidades de dados.
  • Uma configuração de tempo limite no servidor ou em outro dispositivo de rede está definida como muito baixa.
  • Você está tendo um problema de compatibilidade de protocolo HTTPS.
Para problemas de conexão TCP, consulte resoluções A, D, E, F e O. Para problemas de certificado de cliente e problemas de certificado de servidor, consulte resoluções H e I. Para problemas de compatibilidade de protocolo HTTPS, consulte resolução j.

Mensagem de erro 6

Esse problema ocorre quando o valor de tempo limite do cliente for atingido antes de uma das seguintes condições ocorre:
  • É estabelecida uma conexão HTTP.
  • Uma resposta HTTP é recebida do servidor.
  • O fluxo de dados é completamente gravado ou ler.
Para resolver esse problema, consulte resoluções A, E, K, L, M e N.

Resolução

Observação A lista seguinte contém resoluções possíveis que podem se aplicam quando ocorrer um desses problemas. Nem todos os essas resoluções se aplicam a todos esses problemas. Consulte as descrições de problema na seção "Causa" para determinar qual resolução se aplica.

A resolução

Para resolver esse problema, verifique se você estiver usando a versão mais recente do .NET Framework. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
318785Como determinar quais versões do .NET Framework estão instaladas e se os service packs foram aplicados

Resolução B

Para resolver esse problema, verifique se as configurações de proxy estão corretas. Para fazer isso, use as seguintes técnicas:
  • Use o método WebProxy.GetDefaultProxy estático. Para obter mais informações, visite o seguinte site:
    http://msdn2.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy(vs.71).aspx
  • Definir um <proxy> elemento nos arquivos de configuração do aplicativo. Para obter mais informações, visite o seguinte site:
    http://msdn2.microsoft.com/en-us/library/aa903369(VS.71).aspx
  • Configure o cliente .NET para usar HTTP 1.0 alterando a propriedade HttpWebRequest.ProtocolVersion . Para obter mais informações, visite o seguinte site:
    http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest.protocolversion(vs.71).aspx
    Observação Por padrão, o .NET Framework usa HTTP 1.1.
  • Se você estiver usando SSL (Secure Sockets LAYER), certifique-se de que o proxy não está configurado para usar quaisquer regras que estão bloqueando HTTPS.
  • Se você estiver usando autoproxy, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    873199Como usar autoproxy no código gerenciado

Resolução C

Para resolver esse problema, verifique se o aplicativo tem permissões para fazer chamadas de rede e para fazer chamadas de soquete. Essa resolução se aplica quando o aplicativo que faz o HttpWebRequest chamar é executado dentro de um aplicativo da Web. Talvez você precise conceder Ler permissões para o ASPNET conta para que você possa acessar os recursos a seguir:
  • O provedor (Wspwsp.dll) da Microsoft WinSockProxy WS2.0 arquivo
  • HKLM\System\CurrentControlSet\Services\DnsCache
    chave do registro
  • HKLM\System\CurrentControlSet\Services\WinSock2
    chave do registro
Observação Para determinar se o processo do operador ASPNET tem as permissões necessárias, use o utilitário de FileMon e o utilitário RegMon. Para baixar o utilitário de FileMon e o utilitário RegMon, visite o seguinte site da Sysinternals:
http://technet.microsoft.com/en-us/sysinternals/default.aspx
Os produtos de terceiros mencionados neste artigo são fabricados por empresas que são independentes da Microsoft. A Microsoft não oferece garantia, implícita ou não, em relação ao desempenho ou à confiabilidade desses produtos.

Resolução D

Para resolver esse problema, desative o recurso keep-alive. No .NET Framework, defina a propriedade HttpWebRequest.KeepAlive como FALSE. Para fazer isso quando você chamar um serviço da Web, siga estas etapas.

Observação O recurso keep-alive é necessário para a autenticação NTLM.
  1. Crie uma nova classe por herança da classe proxy gerado.
  2. Adicione um método à classe para substituir o método GetWebRequest . Essa alteração permite que você acessar o objeto HttpWebRequest . Se você estiver usando o Microsoft Visual translation from VPE for Csharp, o novo método deve 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 você estiver usando o Microsoft Visual Basic .NET, o novo método deve 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. Criar uma instância da nova classe e use a nova classe para chamar o método de serviço da Web.

Resolução E

Para resolver esse problema, defina a propriedade ServicePointManager.MaxServicePointIdleTime a menos que o valor tempo limite da conexão keep-alive de servidor.

anotações
  • Quando um objeto de ServicePoint ter ficado ocioso para o tempo que é especificado na propriedade MaxIdleTime , está qualificado para coleta de lixo.
  • Verifique se a propriedade ServicePointManager.MaxServicePointIdleTime é definida antes que as solicitações HTTP sejam feitas. Para obter mais informações sobre a propriedade ServicePointManager.MaxSercvePointIdleTime , visite o seguinte site:
    http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.maxservicepointidletime(vs.71).aspx

Resolução F

Para resolver esse problema, aumente o valor de tempo limite no computador do servidor e em outros dispositivos de rede. Para aumentar o valor do tempo limite no Microsoft Internet Information Services (IIS) 6.0, execute essas etapas:
  1. Clique em Iniciar , clique em Painel de controle , clique em Ferramentas administrativas e clique em Gerenciador do Internet Information Services (IIS) .
  2. Clique no nome do computador que você deseja reconfigurar e, em seguida, clique em Sites .
  3. Clique com o botão direito do mouse o site que você deseja reconfigurar e, em seguida, clique em Propriedades .
  4. Digite um novo valor no tempo limite de conexão caixa e, em seguida, clique em OK .
  5. No menu arquivo , clique em Sair .

Resolução G

Para contornar este problema, defina useUnsafeHeaderParsing como True .Para obter mais informações sobre a propriedade useUnsafeHeaderParsing, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
888528Uma lista de bugs que são corrigidos no .NET Framework 1.1 Service Pack 1, mas não são descritos em outro lugar nos individuais artigos da Base de dados de Conhecimento Microsoft

Resolução H

Para resolver esse problema, fornece um certificado de cliente válido para o aplicativo. Para obter mais informações sobre como usar certificados de cliente, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
901183Como chamar um serviço da Web usando um certificado de cliente para autenticação em um aplicativo ASP.NET
895971Como enviar um certificado de cliente usando as classes HttpWebRequest e HttpWebResponse no Microsoft Visual translation from VPE for Csharp .NET

Resolução,

Para resolver esse problema, fornece um certificado de segurança válido para o servidor. Além disso, você poderá resolver esse problema instalando o certificado de autoridade de certificação raiz ou corrigindo o nome comum do certificado do servidor.Para obter mais informações sobre como nomear o certificado do servidor, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
813618Alerta de segurança: O nome do certificado de segurança é inválido ou não corresponde ao nome do site
Aviso Esta solução alternativa pode tornar seu computador ou sua rede mais vulneráveis aos ataques de usuários mal-intencionados ou softwares mal-intencionados como vírus. Nós não recomendamos esta solução alternativa, mas são fornece essas informações para que você pode implementar essa solução alternativa sua vontade. Use esta solução alternativa por seu próprio risco.

Você também pode revisar o código de aplicativo para ignorar esses avisos de certificado. Para fazer isso, implemente sua própria interface ICertificatePolicy . Em seguida, você pode definir a propriedade ServicePointManager.CertificatePolicy para usar sua instância de diretiva de certificado antes da Web chamada de método de serviço é feita.

Observação O método ICertificatePolicy.CheckValidationResult implementa a diretiva de validação do certificado de aplicativo. Para obter mais informações sobre o método ICertificatePolicy.CheckValidationResult , visite o seguinte site:
http://msdn2.microsoft.com/en-us/library/system.net.icertificatepolicy.checkvalidationresult(vs.71).aspx
Para obter mais informações e um exemplo de código, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
823177PROBLEMA: "System.NET.WebException. A conexão subjacente foi fechada. Mensagem de erro não foi possível estabelecer relação de confiança com servidor remoto"ao atualizar o .NET Framework
importante Recomendamos que você não Ignorar avisos de certificado SSL no código devido a possíveis riscos de segurança.

Resolução J

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

Observação Se você já usa o TLS, altere o protocolo HTTPS para SSL. Para alterar o protocolo HTTPS no computador cliente, consulte a seção "Propriedade ServicePointManager.SecurityProtocol" no site da Microsoft:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.securityprotocol.aspx
Observação Por exemplo, para oferecer suporte o protocolo SSL3 e o protocolo TLS1, usar 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 abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
187498Como Desativar PCT 1.0, SSL 2.0, 3.0 SSL ou TLS 1.0 nos serviços de informações da Internet

Resolução K

Para resolver esse problema, aumente o valor da propriedade maxConnection . Para fazer isso, revisar os arquivos de configuração para o aplicativo ou adicionar código do aplicativo.

Observação O valor padrão da propriedade maxConnection é 2. Para aplicativos conectados ao ASP.NET Microsoft que chamar serviços da Web, recomendamos que você definir um valor de 12 vezes o número de processadores. Para definir esse valor usando o código de aplicativo, use a propriedade ServicePointManager.DefaultConnectionLimit . Para obter mais informações sobre a propriedade ServicePointManager.DefaultConnectionLimit , visite o seguinte site:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(vs.71).aspx
Para definir esse valor usando os arquivos de configuração para o aplicativo, adicione o código a seguir ao arquivo de configuração.
<connectionManagement>
  <add address="*" maxconnection="12"/>
</connectionManagement>
para obter mais informações sobre como usar o <connectionmanagement> elemento, visite o seguinte site:
http://msdn2.microsoft.com/en-us/library/aa903351(VS.71).aspx

Resolução L

Para resolver esse problema, certifique-se de que as configurações de tempo limite no servidor e outros dispositivos de rede são implementadas corretamente.Para obter mais informações sobre como implementar configurações de tempo limite, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
904262A solicitação é enviada pela classe HttpWebRequest pode parar de responder quando você usa a classe HttpWebRequest em um aplicativo ASP.NET

Resolução M

Para resolver esse problema, leia sobre ajuste de desempenho do ASP.NET.Para obter mais informações sobre ajuste de desempenho do ASP.NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
821268Contenção, desempenho ruim e travamentos quando você faz solicitações de serviço da Web de aplicativos ASP.NET

Resolução N

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

Resolução O

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

Observação Essa resolução será eficaz se o servidor Web ou o servidor proxy não dá suporte o HTTP 100-Continue cabeçalho. Para obter mais informações sobre como desativar o HTTP 100-Continue cabeçalho para o computador cliente, visite o seguinte 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 sobre o desempenho quando você faz Web serviço chamadas de aplicativos conectados ao ASP.NET, visite o seguinte 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 você faz Web atender a solicitações de aplicativos conectados ao ASP.NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento:
821268Contenção, desempenho ruim e travamentos quando você faz solicitações de serviço da Web de aplicativos ASP.NET
Para obter mais informações sobre como melhorar o desempenho de aplicativos conectados ao ASP.NET, visite o seguinte site:
http://msdn2.microsoft.com/en-us/library/ms998549.aspx
Para obter mais informações sobre como melhorar o desempenho da Web serviços, visite o seguinte site da Microsoft:
http://msdn2.microsoft.com/en-us/library/ms998562.aspx
Para obter mais informações sobre como criar aplicativos conectados ao ASP.NET seguros, visite o seguinte site:
http://msdn2.microsoft.com/en-us/library/aa302408.aspx
Observação O protocolo de transporte TCP é usado para solicitações HTTP. O TCP é um protocolo confiável e orientado por conexão. No entanto, se uma conexão TCP fecha inesperadamente, o aplicativo reenviar a solicitação. Para obter mais informações sobre o protocolo TCP e sobre o comportamento do cliente se o servidor fechar uma conexão, visite o seguinte site do World Wide Web Consortium:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.4
A Microsoft fornece terceiros informações de contatos para ajudá-lo a encontrar suporte técnico. Essa informações de contatos podem ser alteradas sem aviso prévio. A Microsoft não garante a precisão dessas informações contatos de terceiros. Para obter mais informações sobre o utilitário de FileMon e o utilitário RegMon, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
198038Ferramentas úteis para problemas de implantação e pacote
Para obter mais informações sobre o Monitor de rede, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
148942Como capturar o tráfego de rede com o Monitor de rede
812953 Como usar o Monitor de rede para capturar o tráfego de rede

Propriedades

ID do artigo: 915599 - Última revisão: domingo, 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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