Update: Winhttp.dll-Ursachen fehl ein Speicherleck bei Windows-Authentifizierung integrierte

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 826216 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn Sie versuchen, einen Webdienst von einem Client zu nutzen, die Microsoft SOAP 3.0 verwendet, stellen Sie möglicherweise einen Speicherverlust fest.

Hinweis: Dieses Verhalten feststellen, wenn Sie das Authentifizierungsschema für das SOAP-Client-Objekt für die integrierte Windows-Authentifizierung, einstellen indem mithilfe des folgenden Codes:
objSoapClient.ConnectorProperty("WinHTTPAuthScheme") = 2
Hinweis "ObjSoapClient" ist der eine SOAP-Client-Objekt.

Ursache

Das SOAP-Client-Objekt verwendet die WinHTTP.DLL-Komponente. Wenn die integrierte Windows-Authentifizierung fehlschlägt, tritt ein Arbeitsspeicherverlust auf, in der Komponente WinHTTP.dll und bemerken Sie das Verhalten, das im Abschnitt "Problembeschreibung" genannt wird.

Lösung

Es ist ein unterstützter Hotfix von Microsoft erhältlich. Der Hotfix ist jedoch nur die Behebung des Problems die in diesem Artikel beschriebene vorgesehen. Installieren Sie diesen Hotfix nur auf Systemen, bei die dieses spezielle Problem auftritt.

Wenn der Hotfix zum Download verfügbar ist, ist ein Abschnitt "Hotfix Download available (Hotfixdownload verfügbar" am oberen Rand dieser Knowledge Base-Artikel. Wenn in diesem Abschnitt nicht angezeigt wird, senden Sie eine Anfrage an technischen Kundendienst und Support, um den Hotfix zu erhalten.

Hinweis: Wenn weitere Probleme auftreten oder wenn eine Problembehandlung erforderlich ist, müssen Sie möglicherweise eine separate Serviceanfrage erstellen. Die normalen Supportkosten gelten die für zusätzliche Supportfragen und Probleme, die für diesen speziellen Hotfix nicht qualifizieren. Eine vollständige Liste der technischen Kundendienst und Support-Telefonnummern oder eine separate Serviceanfrage erstellen die folgende Microsoft-Website:
http://support.microsoft.com/contactus/?ws=support
Hinweis: Das Formular "Hotfix Download available (Hotfixdownload verfügbar" zeigt die Sprachen für die der Hotfix verfügbar ist. Wenn Ihre Sprache nicht angezeigt wird, ist es, da ein Hotfix nicht für diese Sprache zur Verfügung steht.Die englische Version dieses besitzt die Dateiattribute (oder höher), die in der folgenden Tabelle aufgelistet werden. Die Datums- und Uhrzeitangaben für diese Dateien werden in Coordinated Universal Time () angegeben. Wenn Sie sich die Dateiinformationen ansehen, werden diese Angaben in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu ermitteln verwenden Sie die Registerkarte Zeitzone des Tools ? Datum und Uhrzeit in der Systemsteuerung.

Microsoft Windows 2000-Betriebssysteme

 

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

Microsoft Windows XP-Betriebssysteme

 

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

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel Microsoft-Produkten handelt.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Starten Sie Microsoft Visual Studio .NET.
  2. Zeigen im Menü Datei auf neu , und klicken Sie dann auf Projekt .
  3. Klicken Sie unter Projekttypen auf Visual Basic-Projekte oder Visual C#-Projekte , und klicken Sie dann unter Vorlagen auf ASP.NET-Webdienst .
  4. Nennen Sie das Projekt SampleWebService .
  5. Kommentieren Sie die Datei Service1.asmx die HelloWorld -Webdienstmethode ein.
  6. Klicken Sie im Menü Erstellen auf Erstellen Projektmappen .
  7. Klicken Sie auf Start , und klicken Sie dann auf Ausführen .
  8. Geben Sie Inetmgr im Feld Öffnen ein, und klicken Sie dann auf OK .
  9. In der IIS- Fenster, erweitern Sie Standardwebsite .
  10. Klicken Sie mit der rechten Maustaste auf SampleWebService , und klicken Sie dann auf Eigenschaften .
  11. Klicken Sie im Dialogfeld Eigenschaften von SampleWebService auf die Registerkarte Verzeichnissicherheit .
  12. Klicken Sie unter Authentifizierung und Zugriffsteuerung auf Bearbeiten .
  13. Aktivieren Sie im Dialogfeld Authentifizierungsmethoden das Kontrollkästchen integrierte Windows-Authentifizierung .

    Hinweis: Stellen Sie sicher, dass alle anderen Kontrollkästchen im Dialogfeld Authentifizierungsmethoden deaktiviert sind.
  14. Klicken Sie zweimal auf OK , um das Dialogfeld SampleWebService Eigenschaften zu schließen.
  15. Schließen Sie die IIS- Fenster.
  16. Starten Sie Microsoft Visual Basic 6.0.
  17. Erstellen Sie ein Standard-EXE-Projekt. Standardmäßig wird jetzt Form1 erstellt.
  18. Fügen Sie ein CommandButton -Steuerelement und ein ProgressBar -Steuerelement zu Form1 hinzu. Wenn das ProgressBar -Steuerelement nicht in die Toolbox enthalten ist, gehen Sie folgendermaßen vor:
    1. Klicken Sie im Menü Projekt auf Komponenten .
    2. Klicken Sie auf Microsoft Windows-Standardsteuerelemente 6.0 .

      Hinweis: Wenn der Registerkarte Steuerelemente im Dialogfeld Komponenten nicht Microsoft Windows-Standardsteuerelemente 6.0 enthalten ist, klicken Sie auf Durchsuchen , klicken Sie auf MSCOMCTL.OCX und klicken Sie dann auf Öffnen .
    3. Klicken Sie auf OK , um das Dialogfeld Komponenten zu schließen.
  19. Fügen Sie folgenden Code im click -Ereignis des Steuerelements " Command1 :
    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. Klicken Sie im Menü Ausführen auf Starten . "Form1" wird angezeigt.
  21. Klicken Sie auf Form1 Command1 .
Hinweis: Dieses Verhalten in jeder Anwendung, verwendet die Komponente WinHTTP.dll und auch integrierte Windows-Authentifizierung verwendet, feststellen.

Informationsquellen

Weitere Informationen zur Authentifizierung in WinHTTP die folgenden Microsoft Developer Network (MSDN)-Website:
http://msdn2.microsoft.com/en-us/library/aa383144.aspx
Weitere Informationen finden Sie die folgende KB-Artikelnummer:
305965Gewusst wie: Verwenden von XML-Webdienstmethoden mithilfe von SOAP Toolkit 2.0

Eigenschaften

Artikel-ID: 826216 - Geändert am: Donnerstag, 15. November 2007 - Version: 1.7
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SOAP Toolkit 3.0, wenn verwendet mit:
    • the operating system: Microsoft Windows XP
    • the operating system: Microsoft Windows 2000
Keywords: 
kbmt kbautohotfix kbhotfixserver kbqfe kbqfe kbwebservices kbbug kbfix KB826216 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 826216
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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