FIX: كائنات CallContext يتم فقدها عند إنشاء مكون serviced جديد

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

319177
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
إذا قمت بتعيين كائنات CallContext قبل إنشاء مثيل مكون serviced في تطبيق عميل قد تفقد كائنات CallContext بعد إنشاء مثيل الكائن.
السبب
تحدث هذه المشكلة في حالة اشتقاق الكائنات التي تضع في CallContext من واجهة ILogicalThreadAffinative. إذا قمت بوضع هذه الكائنات في CallContext (بواسطة استخدام الأسلوب CallContext.SetData) ثم إنشاء مثيل لكائن ServicedComponent أسلوب CallContext.GetData هذه الكائنات ترجع "خالي".
الحل
لحل هذه المشكلة، يجب الحصول على أحدث حزمة خدمة لبرنامج Microsoft .NET Framework. للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
318836INFO: كيفية الحصول على أحدث حزمة خدمة لبرنامج .NET Framework

الحل البديل

كمحاولة للتغلب على هذه المشكلة استخدم إحدى الطرق التالية:
  • إذا كنت تريد فقط استخدام العناصر CallContext محلياً في التطبيق الخاص بك لا ينحدر هذه العناصر من ILogicalThreadAffinative.

    ملاحظة: لا النظام الاتصال عن بُعد من تمرير هذه الكائنات عبر AppDomains.
  • إذا كنت تريد استخدام ملقمات الاتصال عن بُعد مع الكائنات ServicedComponent و إذا كنت ترغب في تدفق CallContext إليها يجب إنشاء مثيل من الكائنات ServicedComponent قبل وضع تلك العناصر في CallContext.

    يتعذر التحكم هذا, يمكن تخزين محتويات CallContext قبل إنشاء مثيل ServicedComponent ثم تحميل ثم نسخ المحتويات في.
ملاحظة: يتعذر أخذ الاستفادة ميزة CallContext في تطبيقات ServicedComponent. لا تدعم Microsoft استخدام CallContext من ضمن الكائنات ServicedComponent.
تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في بداية هذه المقالة. تم تصحيح هذه المشكلة لأول مرة في Microsoft .NET Framework المزود بحزمة الخدمة Service Pack 2 (SP2).
معلومات أخرى
مع كائن CallContext يمكنك إرسال المعلومات إلى جانب القناة من العميل إلى الملقم أو العكس بالعكس. يوفر CallContext مجموعة الخصائص التي يتم تنفيذ مع مسار تنفيذ التعليمة البرمجية (استدعاء سلسلة).

تحدث هذه المشكلة أيضًا مع كافة الرؤوس في كائن CallContext.

خطوات إعادة إنشاء المشكلة

  1. تعرّف مثيلات الفئة وضع CallContext:
    [Serializable]public class CtxObject : ILogicalThreadAffinative{	public string CtxString;	public CtxObject(){CtxString = "Some String" ;}}					
  2. وضع أحد هذه الكائنات في فتحة بيانات CallContext ثم قم بإنشاء مثيل ServicedComponent:
    // Create CallContext object.CtxObject CtxObj = new CtxObject () ;                     // Set it in the CallContext.CallContext.SetData ("CtxObject", CtxObj) ;// Create the serviced component.MyServicedComponent MyObj = new MyServicedComponent () ;  // Retrieve the CallContext object (returns null).CtxObject CtxObj1 = (CtxObject) CallContext.GetData ("CtxObject") ;  					
إنشاء مثيل

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

خصائص

رقم الموضوع: 319177 - آخر مراجعة: 01/17/2015 16:36:51 - المراجعة: 3.3

  • Microsoft .NET Framework Class Libraries 1.0
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Enterprise Services (included with the .NET Framework) 1.0
  • kbnosurvey kbarchive kbmt kbvs2002sp1sweep kbbug kbfix kbnetframe100sp2fix kbremoting KB319177 KbMtar
تعليقات