FIX: مراجع إلى كائنات STA التي المُخزّنة في حالة جلسة العمل قد يتعرض للتلف إذا قاموا استدعاؤه من أحداث Session_End

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية827164
ملاحظة
للحصول على إصدار Microsoft .NET Framework 1.0 من هذه المقالة، راجع 827163.
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
إذا قمت بتخزين المراجع إلى كائنات الشقة ترابط واحد (STA) في حالة جلسة العمل وتعيين سمة AspCompat إلى true قد تتلف المراجع أو قد يصبح فقد عند محاولة الحصول على صلاحية الوصول إلى الكائنات من الحدث Session_End.

ملاحظة عادةً، قد تحدث هذه المشكلة في حالة تشغيل التطبيق تحت التحميلات عالية أو إذا كنت تستخدم أداة التحمّل مثل اختبار مركز التطبيق (ACT) عند تشغيل التطبيق. عند حدوث هذه المشكلة، تظهر "0x8004e005 خطأ" رسالة الخطأ في سجل الأحداث.
السبب
وتحدث هذه المشكلة لأنه ليس لدى الحدث Session_End لتشغيل على نفس مؤشر الترابط الذي تم إنشاء جلسة العمل على. تنظيم مطلوب لأنه لم يعد الكائن STA موجودة على نفس مؤشر الترابط الذي تم إنشاء جلسة العمل على ، للوصول إلى الكائن. يؤدي هذا السلوك بطء الأداء.

يمكن تخزين كائنات STA في حالة جلسة العمل. ومع ذلك، لا تنصح Microsoft القيام بذلك. لمزيد من المعلومات، راجع قسم "المراجع" من هذه المقالة.
الحل
يضيف هذا الإصلاح العاجل إعداد تكوين جديد إلى الملف Machine.config. بعد تثبيت الإصلاح الجديد يتوفر تكوين التطبيق التالي.
<httpRuntime apartmentThreading=”true|false” />,
بشكل افتراضي، يتم تعيين apartmentThreading إلى false. إذا قمت بتعيين apartmentThreading إلى true يحدث السلوك التالي:
  • تشغيل كافة الأحداث Session_Start على مؤشرات الترابط STA التي تتوافق مع معرّف جلسة العمل بغض النظر عن الصفحة الهدف أو المعالج.
  • تشغيل كافة الأحداث Session_End على مؤشرات الترابط STA التي تتوافق مع معرف جلسة العمل.
  • يصبح تعيين AspCompat إلى true لكافة الصفحات باستثناء صفحات ذات AspCompat تعيين بشكل صريح إلى false.
ملاحظة مازال يمكن تشغيل الحدث Session_Start على مؤشر الترابط STA في بعد تطبيق هذا الإصلاح العاجل إذا تم تعيين apartmentThreading إلى false وتعيين AspCompat إلى true الصفحة الهدف.

يعمل هذا الإصلاح العاجل STA الكائنات التي تم تخزينها مباشرةً في حالة جلسة العمل. يعمل هذا الإصلاح العاجل أيضًا على كائن STA عميق مستوى واحد مثل كائن .NET التي يتم تخزينها في حالة جلسة العمل ولها مرجع إلى كائن STA متداخلة. ومع ذلك، لا يعمل هذا الإصلاح العاجل لـ STA كائنات تخزين أكثر من مستوى عمقاً.

هام يحتوي هذا الإصلاح العاجل نوعين من حزم: حزمة مثبت Windows Microsoft و حزمة إدارة المكونات الاختيارية (OCM). إذا كنت تستخدم نظام التشغيل Windows Server 2003, يجب تحديد تتطلب تحديث Windows Server 2003 (OCM) بسبب حماية ملفات Windows Server 2003 بمراقبة ملفات .NET Framework 1.1. إذا كنت تستخدم نظام تشغيل بخلاف Windows Server 2003 يجب متابعة استخدام حزمة Windows Installer.

يتوفر إصدار OCM من هذا الإصلاح العاجل باللغات التالية:
  • الإنكليزية (ENU)
  • اليابانية (اليابانية)
  • الألمانية (DEU)
  • الفرنسية (FRN)
يتوفر الآن إصلاح جديد معتمد من Microsoft ولكن الغرض منه هو حل المشكلة الموضحة في هذه المقالة فقط. فقط تطبيقه على الأنظمة التي تواجه هذه المشكلة بالتحديد. قد يتم إجراء اختبارات إضافية على هذا الإصلاح العاجل. ولذلك، إذا لم يكن تأثير هذه المشكلة كبيرًا، نوصي بالانتظار حتى الإصدار التالي من حزمة الخدمة Microsoft .NET Framework 1.1 والذي يحتوي على هذا الإصلاح العاجل.

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

يحتوي إصدار اللغة الإنجليزية من هذا الإصلاح العاجل على سمات الملف (أو الأحدث) المسرودة في الجدول التالي. يتم سرد التواريخ والأوقات الخاصة بهذه الملفات بالتوقيت العالمي coordinated (UTC). عندما تقوم بعرض معلومات الملف، يتم تحويلها إلى التوقيت المحلي. لمعرفة الفرق بين التوقيت العالمي (UTC) والتوقيت المحلي، استخدم علامة التبويب المنطقة الزمنية في أداة التاريخ والوقت في "لوحة التحكم".
   Date         Time   Version       Size       File name   ------------------------------------------------------------------------   18-Sep-2003  05:18  1.1.4322.947    258,048  Aspnet_isapi.dll   18-Sep-2003  05:18  1.1.4322.947     20,480  Aspnet_regiis.exe   18-Sep-2003  05:18  1.1.4322.947     32,768  Aspnet_state.exe   18-Sep-2003  05:18  1.1.4322.947     32,768  Aspnet_wp.exe   16-May-2003  01:49                   33,522  Installpersistsqlstate.sql   16-May-2003  01:49                   34,150  Installsqlstate.sql   18-Sep-2003  05:09  1.1.4322.947     94,208  Perfcounter.dll   19-Sep-2003  02:43  1.1.4322.947  1,216,512  System.dll   19-Sep-2003  02:40  1.1.4322.947    323,584  System.runtime.remoting.dll   19-Sep-2003  02:43  1.1.4322.947  1,253,376  System.web.dll   19-Sep-2003  02:42  1.1.4322.947    819,200  System.web.mobile.dll   19-Sep-2003  02:41  1.1.4322.947    569,344  System.web.services.dll   19-Sep-2003  02:44  1.1.4322.947  1,335,296  System.xml.dll   18-Sep-2003  05:13                   14,472  Webuivalidation.js
تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "تنطبق على" من هذه المقالة.
معلومات أخرى
كما تتضمن حزمة الإصلاحات الجديدة هذه على إصلاح عاجل ثانوي. إذا قمت بتعيين AspCompat إلى true تعيين كائن STA المخزنة في حالة جلسة العمل إلى قيمة خالية قد تتلقى رسالة خطأ "NullReferenceException" عند تحميل الصفحة. إعادة إنشاء المشكلة الثانوي ، قم بلصق التعليمة البرمجية التالية داخل الأحداث Page_Load.
	Session["obj"] = new Object();	Session["obj"] = null;
عندما تقوم بزيارة هذه الصفحة لأول المرة التعليمات البرمجية يعمل بشكل صحيح. ومع ذلك، إذا كان تحميل الصفحة ، تتلقى رسالة خطأ "NullReferenceException" من Microsoft ASP.NET و لا يمكن عرض الصفحة مرة أخرى في جلسة العمل الحالية.

تتبع بنية تخزين العناصر:
[NullReferenceException: Object reference not set to an instance of an object.]System.Web.UnsafeNativeMethods.AspCompatOnPageStart(Object obj) +0System.Web.Util.AspCompatApplicationStep.OnPageStartSessionObjects() +90System.Web.UI.Page.ProcessRequestMain() +44
حالة تعيين AspCompat إلى false "، لا يحدث هذا السلوك.

خطوات إعادة إنشاء في سلوك

إعادة إنشاء المشكلة التي تظهر في قسم "الأعراض" من هذه المقالة ، اتبع الخطوات التالية:
  1. استخدم Microsoft Visual Basic .NET لإنشاء كائن DLL ActiveX Visual Basic.

    ملاحظة إذا قمت بوضع المكون كـ تنفيذ غير المراقب (UE) حدوث الخطأ لا تزال.
  2. إنشاء دالات جهازي في فئة DLL:
    1. إنشاء دالة تقوم بإرجاع سلسلة.
    2. إنشاء دالة التي تأخذ معلمة طويلة وإرجاع قيمة طويلة. يقوم هذه الدالة حلقة إضافة الأرقام من 1 إلى الرقم الذي تم تمريره إلى الدالة.
  3. إنشاء مشروع تطبيق ويب جديد يحتوي على صفحتين .aspx (Page1.aspx و Page2.aspx).
  4. في ملف Global.asax الحدث Session_Start استخدام CreateObject لإنشاء مثيل الكائن الذي قمت بإنشائه في الخطوة 1.
  5. في الحدث Page_Load من Page1.aspx استدعاء أي من الدالات التي قمت بإنشائه في الخطوة 2 من الكائن الذي تم تخزينه في حالة جلسة العمل.
  6. إنشاء ارتباط تشعبي إلى Page2.aspx في Page1.aspx.
  7. في الحدث Page_Load من Page2.aspx استدعاء الأسلوب Session.Abandon.
  8. استخدم اختبار مركز التطبيق (ACT) لإنشاء اختبار السجلات عملية عرض Page1.aspx وعرض Page2.aspx ثم.
  9. تشغيل الاختبار مع مستخدمين عشر. راجع إذا 0x8004e005 يظهر الخطأ في الأحداث عارض.

    ملاحظة قد تحتاج إلى زيادة عدد المستخدمين إعادة إنشاء المشكلة.
مراجع
للحصول على معلومات إضافية، انقر فوق أرقام المقالات التالية لعرضها في "قاعدة المعارف لـ Microsoft:
243543INFO: هل عدم تخزين كائنات STA في تطبيق أو جلسة عمل
243815PRB: تخزين مكونات COM STA في جلسة عمل تأمين جلسة عمل لأسفل ترابط مفرد
817005FIX: جسيمة الأداء المشاكل عند يمكنك ربط حالة جلسة العمل إلى مؤشرات الترابط في وضع ASPCompat

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 827164 - آخر مراجعة: 02/28/2014 00:40:45 - المراجعة: 1.7

Microsoft .NET Framework 1.1, Microsoft Visual Studio .NET 2003 Enterprise Architect, Microsoft Visual Studio .NET 2003 Enterprise Developer, Microsoft Visual Studio .NET 2003 Academic Edition, Microsoft ASP.NET 1.1

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kberrmsg kbnetframe100presp3fix kbfix kbqfe kbcode kbbug KB827164 KbMtar
تعليقات