الإصلاح: فشل Winhttp.dll أسباب تسرب لذاكرة عند Windows المتكاملة مصادقة

الأعراض

عند محاولة استخدام خدمة ويب من عميل يستخدم Microsoft SOAP 3.0، قد تلاحظ تسرب ذاكرة.

ملاحظة: لاحظ هذا السلوك عند تعيين نظام المصادقة لكائن عميل SOAP الخاص بك لمصادقة Windows المتكاملة باستخدام التعليمات البرمجية التالية:
objSoapClient.ConnectorProperty("WinHTTPAuthScheme") = 2
ملاحظة: "أوبجسوابكلينت" هو اسم كائن عميل SOAP.

السبب

يستخدم كائن عميل SOAP المكون Winhttp.dll. في حالة فشل مصادقة Windows المتكاملة، حدوث تسرب لذاكرة في مكون Winhttp.dll، ولاحظت السلوك المذكور في قسم "الأعراض".

الحل

يتوفر إصلاح عاجل معتمد من Microsoft. ومع ذلك، يهدف هذا الإصلاح العاجل إلى حل المشكلة الموضحة في هذه المقالة فقط. تطبيق هذا الإصلاح العاجل فقط على الأنظمة التي تواجه هذه المشكلة بالتحديد.

إذا كان يتوفر الإصلاح العاجل للتنزيل، يوجد مقطع "توفر تنزيل الإصلاح عاجل" أعلى مقالة قاعدة المعارف. إذا لم يظهر هذا المقطع، إرسال طلب إلى خدمة العملاء ل Microsoft والدعم للحصول على الإصلاح العاجل.

ملاحظة: في حالة حدوث مشكلات إضافية أو يجب إجراء استكشاف للأخطاء وحلها، قد يلزم إنشاء طلب خدمة منفصل. سيتم تطبيق تكاليف الدعم المعتادة على أسئلة الدعم الإضافية والمشكلات التي لا يعمل على حلها هذا الإصلاح العاجل بالتحديد. للحصول على قائمة أرقام هواتف خدمة العملاء ل Microsoft والدعم أو لإنشاء طلب خدمة منفصل، قم بزيارة موقع Microsoft التالي على الويب:ملاحظة: يعرض النموذج "توفر تنزيل الإصلاح العاجل" اللغات التي يتوفر الإصلاح الجديد. في حالة عدم ظهور اللغة الخاصة بك، يكون بسبب عدم توفر إصلاح عاجل لتلك اللغة. إصدار الإنكليزية من هذا يحتوي على سمات الملف (أو الأحدث) المسرودة في الجدول التالي. يتم سرد التواريخ والأوقات الخاصة بهذه الملفات بالتوقيت العالمي المتفق عليه (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 ضمن
    قوالب.
  4. اسم المشروع
    سامبليويبسيرفيسي.
  5. في الملف Service1.asmx، قم بإلغاء تحديد
    ويب أسلوب خدمة ويب.
  6. في بنية القائمة، انقر فوق إنشاء حلول.
  7. انقر فوق ابدأ، وثم انقر فوق
    قم تشغيل.
  8. اكتب inetmgr في
    فتح مربع ومن ثم انقر فوق موافق.
  9. في الإطار " خدمات معلومات إنترنت"، قم بتوسيع موقع ويب الافتراضي.
  10. انقر نقراً مزدوجاً فوق سامبليويبسيرفيسي، ومن ثم انقر فوق خصائص.
  11. في مربع الحوار خصائص سامبليويبسيرفيسي ، انقر فوق علامة التبويب أمان الدليل .
  12. ضمن عنصر التحكم الوصول والمصادقة المجهولين، انقر فوق تحرير.
  13. في مربع الحوار أساليب المصادقة ، انقر لتحديد خانة الاختيار مصادقة Windows المتكاملة .

    ملاحظة: تأكد من أن كافة الأخرى خانات الاختيار الموجودة في
    يتم مسح مربع الحوار أساليب المصادقة .
  14. انقر فوق "موافق" مرتين لإغلاق
    مربع الحوار خصائص سامبليويبسيرفيسي .
  15. إغلاق إطار خدمات معلومات إنترنت.
  16. بدء تشغيل برنامج Microsoft Visual Basic 6.0.
  17. إنشاء مشروع EXE قياسي. بشكل افتراضي، يتم إنشاء Form1.
  18. إضافة عنصر تحكم CommandButton و
    التحكم في ProgressBar إلى Form1. إذا لم يتضمن مربع أدوات التحكم ProgressBar ، اتبع الخطوات التالية:
    1. من القائمة مشروع ، انقر فوق
      المكونات.
    2. انقر لتحديد Microsoft Windows 6.0 عناصر التحكم الشائعة.

      ملاحظة: إذا كانت علامة التبويب عناصر تحكم
      مربع الحوار عناصر لا تحتوي على 6.0 عناصر التحكم العامة ل Microsoft Windows، انقر فوق استعراض، انقر فوق
      MSCOMCTL. OCX، ثم انقر فوق فتح.
    3. انقر فوق "موافق" لإغلاق
      عناصر مربع الحوار.
  19. في الحدث click لعنصر التحكم Command1 ، قم بلصق التعليمة البرمجية التالية:
    Dim objSoapClient As ObjectDim 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. في قائمة تشغيل ، انقر فوق
    ابدأ. يتم عرض Form1.
  21. Form1، انقر فوق Command1.
ملاحظة: لاحظ هذا السلوك في أي تطبيق يستخدم مكون Winhttp.dll والذي يستخدم مصادقة Windows المتكاملة أيضا.

المراجع

لمزيد من المعلومات حول مصادقة في WinHTTP، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":
305965 كيفية: استخدام أساليب خدمة ويب XML باستخدام أدوات SOAP 2.0

خصائص

رقم الموضوع: 826216 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات