سؤال

لدي الحاجة إلى إضافة ملحق سلوك مخصص إلى نقاط نهاية عميل WCF الخاص بي. حاولت القيام بذلك من خلال التكوين، ولكن تعرض للعض عن طريق الخطأ المذكور في كثير من الأحيان حيث لا يمكن تكوين WFC تحليل اسم النوع بشكل صحيح. هل يمكنني القيام بذلك برمجيا بدلا من ذلك؟

لا يمكنني تعديل أقسام التكوين في وقت التشغيل لأنها للقراءة فقط. أعرف ما إذا كنت أحصل على مثيل وكيل عميل (IE ClientBase)، يمكنني إضافة إلى نقطة النهاية. Behaviors مثيل لسلوكي المخصص. ومع ذلك، أود القيام بذلك لكل حالة.

هل يمكنني الوصول إلى نقاط النهاية على مستوى العالم وإضافتها مسبقا (على سبيل المثال في Global.asax)، أم أنها نقاط النهاية هذه مفانقتها والتخلص منها بشكل عريضة؟

هل كانت مفيدة؟

المحلول

يجب أن تكون قادرا على إضافة السلوك إلى العميل في رمز شيء مثل هذا:

IMyEndpointBehavior behavior = client.Endpoint.Behaviors.Find<IMyEndpointBehavior>();

if(behavior == null)
{
   client.Endpoint.Behaviors.Add(new MyEndpointBehaviorImplementation());
}

سيتحقق السطر الأول إذا تم تطبيق هذا السلوك بالفعل لتجنب تطبيقه مرتين. إذا لم يتم تطبيقها بالفعل ( .Find() إرجاع المكالمات NULL)، ثم يمكنك إضافة هذا السلوك برمجيا إلى فئة العميل الخاصة بك.

تحتاج إلى القيام بكل هذا قبل إصدار الدعوة الأولى للخدمة، من الواضح. بمجرد القيام بذلك، لا يمكنك تغيير العميل بعد الآن.

مارك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top