CORRECÇÃO: Winhttp.dll causa um vazamento de memória quando a autenticação integrada do Windows Falha

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

Neste artigo

Sintomas

Quando você tenta consumir um serviço da Web de um cliente que usa o Microsoft SOAP 3.0, você perceberá um vazamento de memória.

Observação Você percebe esse comportamento quando você define o esquema de autenticação para o objeto cliente SOAP autenticação integrada do Windows usando o código a seguir:
objSoapClient.ConnectorProperty("WinHTTPAuthScheme") = 2
Observação "objSoapClient" é o nome de um objeto de cliente SOAP.

Causa

O objeto de cliente SOAP usa o componente WinHTTP.dll. Se a autenticação integrada do Windows falhar, um vazamento de memória ocorre no componente WinHTTP.dll e você observar o comportamento mencionado na seção "Sintomas".

Resolução

Um hotfix suportado está disponível no Microsoft. No entanto, esse hotfix destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico.

Se o hotfix está disponível para download, há uma seção "Download de Hotfix disponível" na parte superior neste artigo da Base de dados de Conhecimento. Se esta seção não for exibido, envie uma solicitação para suporte e atendimento ao cliente Microsoft para obter o hotfix.

Observação Se ocorrerem problemas adicionais ou se qualquer solução de problemas é necessária, talvez você precise criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não se qualificam para esse hotfix específico. Para obter uma lista completa de números de telefone de suporte e Atendimento Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação O formulário "Download de Hotfix disponível" exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma, é porque um hotfix não está disponível para esse idioma.A versão em inglês isso apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.

Sistemas operacionais do Microsoft Windows 2000

 

    Date         Time   Version            Size    File name
   --------------------------------------------------------------
   27-Aug-2003  05:22  5.1.2600.1264     310,784  Winhttp.dll      
  
 
				

Sistemas operacionais do Microsoft Windows XP

 

      Date         Time   Version            Size    File name
   --------------------------------------------------------------
   21-Aug-2003  05:46  5.1.2600.1264     945,152  Winhttp.dll      
  
  
 
				

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.

Mais Informações

Passos para reproduzir o problema

  1. Inicie o Microsoft Visual Studio NET..
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Clique em Projetos do Visual Basic ou Visual translation from VPE for Csharp projetos em Tipos de projeto e, em seguida, clique em ASP.NET Web Service em modelos .
  4. Nomeie o projeto SampleWebService .
  5. No arquivo Service1.asmx, descomente o método HelloWorld Web service.
  6. No menu Build , clique em Build Solution .
  7. Clique em Iniciar e, em seguida, clique em Executar .
  8. Digite inetmgr na caixa Abrir e, em seguida, clique em OK .
  9. No IIS janela, expanda Site padrão .
  10. Clique com o botão direito do mouse SampleWebService e, em seguida, clique em Propriedades .
  11. Na caixa de diálogo Propriedades de SampleWebService , clique na guia Segurança de diretório .
  12. Em Anonymous access and authentication control , clique em Editar .
  13. Na caixa de diálogo Métodos de autenticação , clique para marcar a caixa de seleção autenticação integrada do Windows .

    Observação Certifique-se que todas as outras caixas de seleção na caixa de diálogo Métodos de autenticação estejam desmarcadas.
  14. Clique em OK duas vezes para fechar a caixa de diálogo Propriedades de SampleWebService .
  15. Feche o Internet Information Services janela.
  16. Inicie o Microsoft Visual Basic 6.0.
  17. Crie um projeto Standard EXE. Por padrão, é criado o Form1.
  18. Adicione um controle CommandButton e um controle ProgressBar ao Form1. Se a caixa de ferramentas não contém o controle ProgressBar , siga estas etapas:
    1. No menu Project , clique em componentes .
    2. Clique para selecionar controles comuns do Microsoft Windows 6.0 .

      Observação Se o guia de controles da caixa de diálogo componentes não contém 6.0 de controles comuns do Microsoft Windows , clique em Procurar , clique em MSCOMCTL.OCX e em seguida, clique em Abrir .
    3. Clique em OK para fechar a caixa de diálogo Components .
  19. No evento click do controle Command1 , cole o seguinte código:
    Dim objSoapClient As Object
    Dim wsdl As String
    Dim MySoapResponse As String
    Dim i As Long
    
    ' The wsdl variable contains the physical path of the wsdl in the client.
    wsdl = "C:\SoapClient\SoapTestSrv.wsdl"
    Set objSoapClient = CreateObject("Mssoap.SoapClient30")
    objSoapClient.MSSoapInit wsdl
    
    ' The value of AuthUser/AuthPassword must be incorrect for a memory leak to occur.
    objSoapClient.ConnectorProperty("AuthUser") = "TestUserid"
    objSoapClient.ConnectorProperty("AuthPassword") = "TestPassword"
    objSoapClient.ConnectorProperty("WinHTTPAuthScheme") = 2
    
    ' Replace ServerName with the name of the server where the Web service Service1.asmx is hosted.
    objSoapClient.ConnectorProperty("EndPointURL") = "http://ServerName/SampleWebService/Service1.asmx"
    
    For i = 1 To 500000
        On Error Resume Next
        On Error GoTo Error
        MySoapResponse = objSoapClient.HelloWorld
    
        'If you run this code, you will notice a memory leak.
        If (i Mod 500000) = 0 Then
            ProgressBar1.Value = ProgressBar1.Value + 1
        End If
    
    Error:
        MsgBox (Err.Description)
    Next
    
    Set objSoapClient = Nothing
  20. No menu Executar , clique em Iniciar . Form1 é exibida.
  21. No Form1 , clique em Command1 .
Observação Você percebe esse comportamento em qualquer aplicativo que usa o componente WinHTTP.dll e que também usa a autenticação integrada do Windows.

Referências

Para obter mais informações sobre autenticação no WinHTTP, visite o seguinte site da Web Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa383144.aspx
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
305965COMO: Utilizar métodos de serviço XML da Web usando SOAP Toolkit 2.0

Propriedades

ID do artigo: 826216 - Última revisão: quinta-feira, 15 de novembro de 2007 - Revisão: 1.7
A informação contida neste artigo aplica-se a:
  • Microsoft SOAP Toolkit 3.0 nas seguintes plataformas
    • the operating system: Microsoft Windows XP
    • the operating system: Microsoft Windows 2000
Palavras-chave: 
kbmt kbautohotfix kbhotfixserver kbqfe kbqfe kbwebservices kbbug kbfix KB826216 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: 826216

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