ظهور رسالة خطأ عند استخدام الأسلوب Response.BinaryWrite في IIS 6 وفي IIS 7: "HTTP 500" أو "استجابة المخزن المؤقت تجاوز حد"


الأعراض


عند إرسال ملف إلى كمبيوتر عميل من ملقم ويب حيث تم تثبيت IIS 6 أو 7 من خدمات معلومات إنترنت (IIS)، قد تتلقى رسالة إعلام بخطأ على جهاز الكمبيوتر العميل التي تمثل أحد ما يلي:
رسالة الخطأ 1
500-خطأ داخلي في الملقم HTTP
رسالة الخطأ 2
خطأ كائن الاستجابة 'ASP 0251:80004005'

تم تجاوز حد المخزن المؤقت للاستجابة

تسبب تنفيذ صفحة ASP في "المخزن المؤقت للاستجابة" لتجاوز الحد الذي تم تكوينه.
رسالة الخطأ 1
بالإضافة إلى ذلك، قد تتلقى رسالة في ملف سجل IIS مشابهة لما يلي:
ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded
تحدث هذه المشكلة عند استخدام الأسلوب Response.BinaryWrite لإرسال الملف إلى جهاز الكمبيوتر العميل ويتم تعيين الخاصية أسببوفيرينجون إلى False.

السبب


تحدث هذه المشكلة لأن تفرض IIS صفحات ملقم نشطة (ASP) استجابة المخزن مؤقت قيمة افتراضية من 4 ميغا بايت عند تعطيل التخزين المؤقت استجابة ASP.

الحل


في معظم السيناريوهات، 4 ميغا المخزن المؤقت غير كافية للاستجابات ASP التي يتم إرسالها إلى عملاء ويب. في حالة عدم كفاية هذا الحد، استخدم إحدى الطرق التالية.

الطريقة الأولى: قم بإنقاص حجم الاستجابة

لحل هذه المشكلة عند استخدام الأسلوب Response.BinaryWrite والتخزين المؤقت ل ASP متوقفاً عن التشغيل، تأكد من أن البيانات التي يتم إرجاعها إلى العميل ليس أكبر من 4 ميغابايت.

إذا كانت الاستجابة أكبر من القيمة الافتراضية 4 ميجابايت، هذا الحجم كثيرا ما تتسبب في أسلوب عمل مستخدم ضعيفة. مستعرض ويب يجب أن تلقي استجابة كبيرة عبر شبكة الاتصال. ثم يجب أن مستعرض ويب تحليل وعرض استجابة HTML كبير جداً.

الطريقة الثانية: تمكين التخزين المؤقت ل ASP الاستجابة وزيادة حد المخزن المؤقت

في IIS 6، يمكنك استخدام الخاصية AspBufferingOnقاعدة تعريف IIS لتمكين أو تعطيل التخزين المؤقت على مستوى التطبيق. لمزيد من المعلومات حول خاصية قاعدة تعريف IIS أسببوفيرينجون، قم بزيارة موقع Microsoft التالي على الويب:ملاحظة: في IIS 7، يمكنك تمكين أو تعطيل ASP استجابة التخزين المؤقت على مستوى التطبيق باستخدام قيمة بوفيرينجون في قسم آسيا والمحيط الهادئ من < System.webserver > في ملف ApplicationHost.config أو في ملف Web.config.

لتمكين أو تعطيل التخزين المؤقت على مستوى الصفحة، يمكنك استخدام الخاصية Response.Buffer.

إذا كان يجب زيادة حد المخزن المؤقت، حدد حد المخزن مؤقت الذي يسمح بأكبر حجم استجابة المعروفة. إذا كنت لا تعرف أكبر حجم استجابة مقدما، يمكنك زيادة حد المخزن المؤقت إلى قيمة كبيرة أثناء الاختبار. بعد الانتهاء من اختبار، استخدم القيمة الأكبر التي تظهر في الحقل بايت scفي ملف سجل IIS للاستجابة التي تم إنشاؤها للصفحة.

لزيادة حد التخزين المؤقت في IIS 6، اتبع الخطوات التالية:
  1. انقر فوق ابدأ، ثم انقر فوق تشغيل، واكتب cmdوثم انقر فوق موافق.
  2. اكتب الأمر التالي، ومن ثم اضغط ENTER:
    cd/d %systemdrive%\inetpub\adminscripts
  3. اكتب الأمر التالي، ومن ثم اضغط ENTER:
    تعيين cscript.exe adsutil.vbs w3svc/أسببوفيرينجليميت ليميتسيزي
    ملاحظة: يمثل ليميتسيزيتحديد حجم التخزين المؤقت بالبايت. على سبيل المثال، تعيين رقم 67108864 حجم حد التخزين المؤقت إلى 64 ميغا بايت.
للتأكد من أنه تم تعيين حد المخزن المؤقت بشكل صحيح، اتبع الخطوات التالية:
  1. انقر فوق ابدأ، ثم انقر فوق تشغيل، واكتب cmdوثم انقر فوق موافق.
  2. اكتب الأمر التالي، ومن ثم اضغط ENTER:
    cd/d %systemdrive%\inetpub\adminscripts
  3. اكتب الأمر التالي، ومن ثم اضغط ENTER:
    الحصول على adsutil.vbs cscript.exe w3svc/أسببوفيرينجليميت

الحالة


أقرت Microsoft أن هذا هو الشوائب في منتجات Microsoft المسردة في قسم "تنطبق على".

مزيد من المعلومات


عند استخدام الأسلوب Response.BinaryWrite وتعطيل التخزين المؤقت استجابة في آسيا والمحيط الهادئ، يمكنك فقط إرسال 4 ميغابايت من البيانات للعميل إلا إذا تم تعيين الخاصية حد التخزين المؤقت للصفحة. بشكل افتراضي، القيمة للخاصية أسببوفيرليميت في IIS 6 والخاصية بوفيرليميت في IIS 7 4,194,304 بايت.

بالإضافة إلى ذلك، فشل BinaryWrite() API إذا كانت أكبر من قيمة الحد المخزن المؤقت استجابة إلى العميل على الرغم من إيقاف تشغيل التخزين المؤقت ل ASP استجابة.

ملاحظة: نوصي بأن تقوم بتمكين التخزين المؤقت ل ASP استجابة. التخزين المؤقت ل ASP استجابة زيادة أداء تطبيق الويب.