Oprava: Winhttp.dll způsobuje nevracení paměti při Windows integrované ověřování selže

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:826216
Příznaky
Při pokusu o spotřebovat webové služby z klienta, který používá Microsoft SOAP 3.0 všimnout nevracení paměti.

Poznámka: Všimněte si toto chování při nastavit schéma ověřování pro klienta objekt vaše SOAP na integrované ověřování systému Windows pomocí následující kód:
objSoapClient.ConnectorProperty("WinHTTPAuthScheme") = 2
Poznámka "objSoapClient" je název objektu klienta SOAP.
Příčina
Objekt klienta SOAP používá součást Winhttp.dll. Pokud integrované ověřování systému Windows nezdaří, součást Winhttp.dll dochází k nevracení paměti a Všimněte si chování uvedena v "příznaky".
Řešení
K dispozici je podporovaná oprava hotfix od společnosti Microsoft. Tato oprava hotfix je však určena pouze k opravě problému popsanému v tomto článku. Použijte tuto opravu hotfix pouze u systémů, kde dochází k tomuto konkrétnímu problému.

Pokud je oprava hotfix k dispozici ke stažení, v horní části tohoto článku je sekce "Hotfix stažení k dispozici". Není-li tato část uvedena, vyžádejte si tuto opravu hotfix od oddělení služeb zákazníkům a podpory společnosti Microsoft.

Poznámka: Pokud vyskytnout další problémy nebo jakékoli řešení potíží je vyžadován, pravděpodobně budete muset vytvořit zvláštní požadavek na službu. Výdaje na technickou podporu se týkají dalších otázek a problémů, které nelze vyřešit pomocí této opravy konkrétní opravy hotfix. Navštivte následující web společnosti Microsoft pro získání telefonního čísla na Zákaznické centrum, nebo pokud chcete vytvořit samostatnou žádost o podporu: Poznámka: Zobrazí formulář "Hotfix stažení k dispozici" jazyky, pro které je oprava hotfix k dispozici. Pokud váš jazyk není zobrazen, oprava hotfix není k dispozici pro daný jazyk.Anglická verze této má atributy souborů (nebo novější), které jsou uvedeny v následující tabulce. Data a časy jednotlivých souborů jsou uvedeny ve formátu UTC (Coordinated Universal Time). Pokud zobrazíte informace o souboru, bude převedena na místní čas. Rozdíl mezi místním ČASEM a najít, použijte kartu časové pásmo v ovládacím panelu Datum a čas.

Operační systémy Microsoft Windows 2000

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

Operační systémy Microsoft Windows XP

       Date         Time   Version            Size    File name   --------------------------------------------------------------   21-Aug-2003  05:46  5.1.2600.1264     945,152  Winhttp.dll           				
Prohlášení
Společnost Microsoft potvrzuje, že se jedná o chybu v produktech společnosti uvedených na začátku tohoto článku.
Další informace

Kroky pro reprodukci tohoto chování

  1. Spusťte aplikaci Visual Studio .NET.
  2. V nabídce soubor přejděte na příkaz Nový a klepněte na příkaz projekt.
  3. Klepněte v části Typy projektuJazyka projekty nebo Projekty Visual C# a v části šablony klepněte na příkaz Webová služba ASP.NET.
  4. Název projektu SampleWebService.
  5. V souboru Service1.asmx vložte metodu HelloWorld webové služby.
  6. V nabídce vytvořit klepněte na příkaz Sestavit řešení.
  7. Klepněte na tlačítko Start a potom klepněte na příkaz Spustit.
  8. Do pole Otevřít zadejte inetmgr a klepněte na tlačítko OK.
  9. V Internetová informační služba okno, rozbalte položku Výchozí webový server.
  10. SampleWebService klepněte pravým tlačítkem myši a potom klepněte na příkaz Vlastnosti.
  11. V dialogovém okně Vlastnosti SampleWebService klepněte na kartu Zabezpečení adresáře.
  12. Ve skupinovém rámečku anonymního přístupu a ověřování klepněte na tlačítko Upravit.
  13. V dialogovém okně Způsoby ověřování klepnutím zaškrtněte políčko integrované ověřování systému Windows.

    Poznámka: Přesvědčte se, zda jsou všechny ostatní zaškrtávací políčka v dialogovém okně Metody ověřování zrušeno.
  14. Klepněte dvakrát na tlačítko OK zavřete dialogové okno Vlastnosti SampleWebService.
  15. Internetová informační služba zavřete okno.
  16. Spuštění aplikace Microsoft Visual Basic 6.0.
  17. Vytvoření projektu standardní EXE. Ve výchozím nastavení je vytvořen Form1.
  18. Přidat ovládací prvek CommandButton a řízení ProgressBar Form1. Pokud na panelu nástrojů neobsahuje ovládací prvek ProgressBar, postupujte takto:
    1. V nabídce projekt klepněte na tlačítko součásti.
    2. Klepnutím vyberte Microsoft Windows společné prvky 6.0.

      Poznámka:Prvky kartu v dialogovém okně součástiMicrosoft Windows společné prvky 6.0 neobsahuje, klepněte na tlačítko Procházet, klepněte na tlačítko MSCOMCTL.OCX a klepněte na tlačítko Otevřít.
    3. Klepněte na tlačítko OK zavřete dialogové okno součásti.
  19. V události klepněte na ovládací prvek Command1 vložte následující kód:
    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. V nabídce Run klepněte na tlačítko Start. Zobrazí Form1.
  21. Na Form1 klepněte Command1.
Poznámka: Všimněte si toto chování v libovolné aplikaci, která používá součást Winhttp.dll a také používá integrované ověřování systému Windows.
Odkazy
Další informace o ověřování WinHTTP naleznete na webu Microsoft Developer Network (MSDN):Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
305965Postupy: Využívat metody webové služby XML pomocí SOAP Toolkit 2.0

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 826216 - Poslední kontrola: 11/15/2007 14:08:20 - Revize: 1.7

Microsoft SOAP Toolkit 3.0

  • kbmt kbautohotfix kbhotfixserver kbqfe kbqfe kbwebservices kbbug kbfix KB826216 KbMtcs
Váš názor