您目前已離線,請等候您的網際網路重新連線

FIX: winhttp.dll 記憶體遺漏時,會造成 Windows 整合式驗證失敗

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:826216
徵狀
當想取用 Web 服務,從使用 Microsoft SOAP 3.0 用戶端可能會注意到有記憶體流失的現象發生。

附註您可以使用下列程式碼來設定 Windows 整合式驗證您 SOAP 用戶端物件的驗證配置時,發現這種行為:
objSoapClient.ConnectorProperty("WinHTTPAuthScheme") = 2
筆記 objSoapClient 」 是 SOAP 用戶端物件的名稱。
發生的原因
SOAP 用戶端物件將使用 Winhttp.dll 元件。如果 Windows 整合式驗證,失敗時 Winhttp.dll 的元件中發生記憶體遺漏和您注意到 < 徵狀 > 一節所提到的行為。
解決方案
Microsoft 提供支援的 Hotfix。不過,此 Hotfix 旨在修正本文中所述隨問題。只會發生此特定問題的系統套用此 Hotfix。

如果此 Hotfix 可供下載,您可在本知識庫文件的頂端找到「 可用的 Hotfix 下載 」區段。如果沒有出現此區段,將要求提交到 Microsoft 客戶服務及支援],以取得該 Hotfix。

附註如果發生其他問題,或如果需要任何疑難排解,您可能必須建立個別的服務要求。和此 Hotfix 無關的額外支援問題適用一般的支援費用。如需 Microsoft 客戶服務支援部門電話號碼的完整清單或要建立個別的服務要求,請造訪下列 Microsoft 網站:附註「 下載 Hotfix 」 表單會顯示此 Hotfix 會出現,以供使用的語言。如果您沒有看到您的語言,是因為此 Hotfix 是不適用您的語言。Hotfix 的英文版具有檔案屬性 (或更新) 中如下表所列。這些檔案的日期和時間為 Coordinated Universal Time (UTC)。當您檢視檔案資訊時,會將它轉換為當地時間。 若要到 UTC 與當地時間差異使用 [中日期] 和 [時間] 工具,在 [控制台] 中的 [時區] 索引標籤]。

Microsoft Windows 2000 作業系統

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

Microsoft Windows XP 作業系統

       Date         Time   Version            Size    File name   --------------------------------------------------------------   21-Aug-2003  05:46  5.1.2600.1264     945,152  Winhttp.dll           				
狀況說明
Microsoft 已確認這是在本文開頭所列之 Microsoft 產品中的有錯誤。
其他相關資訊

重製行為的步驟

  1. 啟動 Microsoft Visual Studio.NET。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
  3. 按一下 [專案類型,] 下的 [Visual Basic 專案] 或 [Visual C# 專案,然後按一下 [範本] 下方的 [ASP.NET Web 服務
  4. 為專案的名稱 SampleWebService
  5. Service1.asmx] 檔案中取消註解 HelloWorld Web 服務方法。
  6. 在 [建置] 功能表上按一下 建置方案
  7. 按一下 [開始],然後按一下 [執行]。
  8. 在 [開啟] 方塊中輸入 inetmgr,然後再按一下 [確定]。
  9. 在 [網際網路資訊服務] 視窗,展開 預設的網站
  10. SampleWebService,] 上按一下滑鼠右鍵,然後按一下 [內容]。
  11. 在 [SampleWebService 內容] 對話方塊按一下 [目錄安全 設定] 索引標籤。
  12. 在 [匿名存取及驗證控制,按一下 [編輯]。
  13. 在 [驗證方法] 對話方塊按一下以選取 [整合式 Windows 驗證] 核取方塊。

    附註請確定會清除所有其他核取方塊在 [驗證方法] 對話方塊。
  14. 按兩次 [確定] 關閉 SampleWebService 內容] 對話方塊。
  15. 關閉 [網際網路資訊服務] 視窗。
  16. 啟動 Microsoft Visual Basic 6.0。
  17. 建立標準 EXE 專案。依照預設值,會建立 Form1。
  18. 命令按鈕 控制項和 ProgressBar 控制項加入 Form1。如果工具箱沒有包含 ProgressBar 控制項,請依照下列步驟執行:
    1. 按一下 [專案] 功能表 的元件
    2. 按一下以選取 [Microsoft Windows 通用控制項 6.0

      附註如果 [元件] 對話方塊的 [控制項] 索引標籤不包含 Microsoft Windows 通用控制項 6.0,按一下 [瀏覽],按一下 MSCOMCTL.OCX,然後再按一下 [開啟舊檔
    3. 按一下 [確定] 關閉 [元件] 對話方塊。
  19. 按一下Command1 控制項的事件,貼上下列程式碼:
    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. 在 [執行] 功能表上按一下 [開始]。顯示 [Form1]。
  21. 按一下 [Form1Command1
附註您注意到在任何應用程式中,使用 Winhttp.dll 元件並且,也會使用 Windows 整合式的驗證這種行為。
参考
如需有關在 WinHTTP 驗證的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 û 工 u 具 ã 網路 (MSDN) 網站]:如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
305965如何: 使用 SOAP Toolkit 2.0 消耗 XML Web 服務方法

警告:本文為自動翻譯

內容

文章識別碼:826216 - 最後檢閱時間:11/15/2007 14:08:20 - 修訂: 1.7

Microsoft SOAP Toolkit 3.0

  • kbmt kbautohotfix kbhotfixserver kbqfe kbqfe kbwebservices kbbug kbfix KB826216 KbMtzh
意見反應
"76500"; var Ctrl = ""; document.write("