CORRIGER : winhttp.dll provoque une fuite de mémoire lorsqu' authentification intégrée de Windows échoue

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que feraient une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique. Si vous relevez des erreurs graves et souhaitez contribuer à l’amélioration du système, vous pouvez compléter l’enquête à votre disposition dans le bas des articles.

La version anglaise de cet article est la suivante: 826216
Symptômes
Lorsque vous essayez de consommer un service Web d'un client qui utilise Microsoft SOAP 3.0, vous pouvez remarquer une fuite de mémoire.

Remarque Vous observez ce problème lorsque vous définissez le modèle d'authentification pour votre objet SOAP à l'authentification intégrée de Windows client en utilisant le code suivant :
objSoapClient.ConnectorProperty("WinHTTPAuthScheme") = 2
Remarque "objSoapClient" est le nom d'un objet SOAP client.
Cause
L'objet SOAP client utilise le composant Winhttp.dll. Si authentification intégrée de Windows échoue, une fuite se produit de mémoire dans le composant Winhttp.dll et vous observez le problème mentionné dans la section "Symptômes".
Résolution
Un correctif pris en charge est disponible auprès de Microsoft. Cependant est conçu ce correctif corriger le problème seulement décrit dans cet article. À devoir appliquez ce correctif seulement aux systèmes qui rencontrent ce problème spécifique.

Si le correctif est disponible pour le téléchargement, il y a une section de "téléchargement disponible de Correctif" située de cet article de Base de connaissances. Si cette section n'apparaît pas, soumettez une demande à service clientèle de Microsoft et Support d'obtenir le correctif.

Remarque si problèmes supplémentaires se produisent ou si tout dépannage est requis, vous pouvez doit créer une demande de service distinct. Les coûts habituels de support technique s'appliqueront à questions sur le support technique qui ne qualifient pas pour ce correctif spécifique et problèmes. Une liste complète ou de numéro de téléphone service clientèle de Microsoft et Support créant une demande de service distinct, reportez-vous au site Web de Microsoft à l'adresse suivante : Remarque le formulaire "téléchargement correctif disponible" affiche les langues pour lesquelles le correctif est disponible. Si vous ne voyez pas votre langue, elle est parce qu'un correctif n'est pas disponible pour la langue. La version anglaise de cela comporte les attributs de fichier (ou plus tard) qui est répertoriée dans le tableau suivant. Les dates et les dates de ces fichiers sont exprimées en temps universel (UTC) coordonné. Lorsque vous affichez l'information de fichier, elle est converti à l'heure locale. Pour rechercher la différence entre UTC et l'heure locale, utilisez l'onglet Fuseau horaire dans l'outil dans Panneau de configuration Date et heure.

Systèmes d'exploitation Microsoft Windows 2000

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

Système d'exploitation Microsoft Windows XP

       Date         Time   Version            Size    File name   --------------------------------------------------------------   21-Aug-2003  05:46  5.1.2600.1264     945,152  Winhttp.dll           				
Statut
Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft répertoriés au début de cet article
Plus d'informations

Procédure pour reproduire le problèm

  1. Démarrez Microsoft Visual Studio .NET.
  2. Dans le menu , pointez sur et cliquez sur .
  3. Cliquez sur ou , sous et puis cliquez sur , sous .
  4. Nommez le projet SampleWebService.
  5. Dans le fichier Service1.asmx, ne commentez pas la méthode de service Web.
  6. Dans le menu , cliquez sur .
  7. Cliquez sur et puis cliquez sur .
  8. Typ inetmgr Dans le <UITERM>, Ouvrez zone </UITERM> et puis cliquez sur .
  9. Dans la fenêtre , développez .
  10. Cliquez avec le bouton droit sur et puis cliquez sur .
  11. Dans la boîte de dialogue , cliquez sur l'onglet .
  12. Sous , cliquez sur .
  13. Dans la boîte de dialogue , activez la case à cocher .

    Remarque Assurez-vous que les toutes toutes cases à cocher de la boîte de dialogue Méthodes d'authentification sont désactivées.
  14. Cliquez sur fois deux pour fermer la boîte de dialogue .
  15. Fermez la fenêtre .
  16. Démarrez Microsoft Visual Basic 6.0.
  17. Créez un projet EXE standard. Par défaut, Form1 est créé.
  18. Ajoutez un contrôle et un contrôle à Form1. Si la boîte ne contient pas le contrôle , procédez comme suit :
    1. Dans le menu , cliquez sur .
    2. Sélectionnez .

      Remarque clique sur Parcourir si l'onglet Contrôles de la boîte de dialogue Composants ne contient pas Microsoft Windows Common Controls 6.0, clique sur MSCOMCTL.OCX et clique puis, sur Ouvrir.
    3. Cliquez sur pour fermer la boîte de dialogue .
  19. Dans l'événement du contrôle , collez le code suivant :
    Dim objSoapClient As ObjectDim wsdl As StringDim MySoapResponse As StringDim 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 IfError:    MsgBox (Err.Description)NextSet objSoapClient = Nothing
  20. Dans le menu , cliquez sur . Form1 s'affiche
  21. Sur , cliquez sur .
Remarque Vous observez ce problème dans toute application qui utilise le composant Winhttp.dll et utilise également l'authentification intégrée de Windows.
Références
Pour plus d'informations sur l'authentification dans WinHTTP, visitez le site Web Microsoft Developer Network ( MSDN ) suivant : Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
305965 COMMENT À : vous consommez des méthodes de service Web XML en utilisant SOAP Toolkit 2.0

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 826216 - Dernière mise à jour : 11/15/2007 14:08:20 - Révision : 1.7

Microsoft SOAP Toolkit 3.0

  • kbautohotfix kbhotfixserver kbqfe kbqfe kbwebservices kbbug kbfix KB826216 KbMtfr kbmt
Commentaires