سؤال

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

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

المحلول

لاحظ أنه إذا كنت ترغب في اعتراض الرسالة الخام، وليس المعلمات، يمكنك حقن تنفيذك idispatchmessageInspector. بدلا من نقطة تمديد iParameterInspector الذي يوحي داني.

نصائح أخرى

يوجد تقفيز في WCF: يمكنك إنشاء أدوات الأدوات المستفادة من السمة، IOPERATBEHAVIOR.

داخلك تنفذ:

public void ApplyDispatchBehavior(

   OperationDescription operationDescription,

   DispatchOperation dispatchOperation

   )
{

  dispatchOperation.ParameterInspectors.Add(

     new ServerPI()

     );

}

وفئة ServerPI () هي ما يفعل السحر: يمكنك القيام بكل ما تحتاجه في Beforecall وأساليب ما بعد الظهر:

  class ServerPI : IParameterInspector
  {

    public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
    {
      Guid result = (Guid)correlationState;
      // ...
    }

    public object BeforeCall(string operationName, object[] inputs)
    {
      string parameter1 = inputs[0] as string;
      return Guid.NewGuid();
    }

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