Que CORRIGE: Winhttp.dll produce una pérdida de memoria cuando se produce un error en autenticación integrada de Windows

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

En esta página

Síntomas

Cuando intenta consumir unos servicios Web desde un cliente que utiliza SOAP de Microsoft 3.0, puede observar una pérdida de memoria.

Nota Observa este comportamiento cuando establece el esquema de autenticación para Su objeto de cliente SOAP con autenticación integrada de Windows utilizando el código siguiente:
objSoapClient.ConnectorProperty("WinHTTPAuthScheme") = 2
Nota "objSoapClient" es el nombre de un objeto de cliente SOAP.

Causa

El objeto de cliente SOAP utiliza el componente Winhttp.dll. Si falla autenticación integrada de Windows, se produce una pérdida de memoria en el componente Winhttp.dll y observa el comportamiento mencionado en la sección "Síntomas".

Solución

Una revisión compatible está disponible en Microsoft. Sin embargo, está pensado que esta revisión corrija sólo el problema descrito en este artículo. Aplique esta revisión sólo a sistemas que experimentan este problema específico.

Si la revisión está disponible para descarga, hay una sección de "descarga disponible de revisión" al principio de este artículo de Knowledge Base. Si esta sección no aparece, envíe una solicitud a Servicio de atención al cliente de Microsoft y a Soporte técnico de obtener la revisión.

Nota Si se produce problemas adicionales o si es necesario solucionar cualquiera, podría tener que crear una solicitud de servicio independiente. Los costos habituales de soporte técnico se aplicarán a preguntas de soporte técnico y problemas que no cumplen esta revisión específica. Para que cree una solicitud de servicio independiente una lista completa o de número de teléfono Servicio de atención al cliente de Microsoft y Support, visite el sitio Web de Microsoft siguiente:
http://support.microsoft.com/contactus/?ws=support
Nota El formulario de "se descarga revisión disponible" muestra los idiomas para los que está disponible la revisión. Si no ve su Lenguaje, lo hay porque una revisión no está disponible para aquel idioma. La versión de esto en inglés tiene los atributos de archivo (o posteriormente) se enumeran aquéllos en la tabla siguiente. Las fechas y los tiempos para estos archivos aparecen en hora universal coordinada (en UTC). La información de los archivos se convertirá a la hora local cuando la vea Para ver la diferencia entre hora UTC y hora local, utilice la ficha Zona horaria en la herramienta Fecha y hora en Panel de control.

Sistema operativo Microsoft Windows 2000

 

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

Sistema operativo de Microsoft Windows XP

 

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

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

Pasos para reproducir este comportamiento

  1. Inicie Microsoft Visual Studio .NET.
  2. En el menú Archivo, seleccione Nuevo y a continuación, haga clic en Proyecto.
  3. Haga clic en Proyectos de Visual Basic o en Proyectos de Visual C en Tipos de proyecto y a continuación, haga clic en Servicio Web ASP.NET en Plantillas.
  4. Denomine el proyecto SampleWebService.
  5. En el archivo Service1.asmx, elimine el comentario del método HelloWorld de servicio Web.
  6. En el menú Generar, haga clic en Generar solución.
  7. Haga clic en Inicio y a continuación, haga clic en Ejecutar.
  8. Tipo inetmgr En el <UITERM>, Abra cuadro </UITERM> y a continuación, haga clic en Aceptar.
  9. En la ventana Servicios de Internet Information Server, expanda Sitio Web predeterminado.
  10. Haga clic con el botón secundario en SampleWebService y a continuación, haga clic en Propiedades.
  11. En el cuadro de diálogo SampleWebService Properties, haga clic en la ficha Seguridad de directorios.
  12. En Control de autenticación y acceso anónimo, haga clic en Modificar.
  13. En el cuadro de diálogo Métodos de autenticación, haga clic para activar la casilla de verificación Autenticación de Windows integrada.

    Nota Asegúrese de que todas las otras casilla de verificación en el cuadro de diálogo Métodos de autenticación están desactivadas.
  14. Haga clic dos veces en Aceptar para cerrar los cuadros de diálogo SampleWebService Properties.
  15. Cierre la ventana Servicios de Internet Information Server.
  16. Inicie Microsoft Visual Basic 6.0.
  17. Cree un proyecto EXE estándar. De forma predeterminada, se crea Form1
  18. Agregue a Form1 un control CommandButton y un control ProgressBar. Si el cuadro de herramientas no contiene el control ProgressBar, siga estos pasos:
    1. En el menú Proyecto, haga clic en Componentes.
    2. Microsoft Windows Common Controls 6.0 Hacer clic para seleccionar.

      Nota hace clic en Examinar, hace clic en MSCOMCTL.OCX y a continuación, hace clic en Abrir si no contiene Microsoft Windows Common Controls 6.0 la ficha Controles del cuadro de diálogo Componentes.
    3. Haga clic en Aceptar para cerrar los cuadros de diálogo Componentes.
  19. En el evento Click del control Command1, pegue el código siguiente:
    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. En el menú Run, haga clic en Inicio. Se muestra Form1.
  21. En Form1, haga clic en Command1.
Nota Observa este comportamiento en cualquier aplicación que utiliza el componente Winhttp.dll y que también utiliza autenticación integrada de Windows.

Referencias

Para más información acerca de autenticación en WinHTTP, visite el sitio Web siguiente Microsoft Developer Network ( MSDN ):
http://msdn2.microsoft.com/en-us/library/aa383144.aspx
Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
305965 CÓMO PARA: Utiliza métodos de servicio Web XML utilizando SOAP Toolkit 2.0

Propiedades

Id. de artículo: 826216 - Última revisión: jueves, 15 de noviembre de 2007 - Versión: 1.7
La información de este artículo se refiere a:
  • Microsoft SOAP Toolkit 3.0 sobre las siguientes plataformas
    • the operating system: Microsoft Windows XP
    • the operating system: Microsoft Windows 2000
Palabras clave: 
kbautohotfix kbhotfixserver kbqfe kbqfe kbwebservices kbbug kbfix KB826216 KbMtes kbmt
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. Si ve errores y desea ayudar con este esfuerzo, rellene la encuesta en la parte inferior de este artículo.
Haga clic aquí para ver el artículo original (en inglés): 826216

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