متى تكون آخر لحظة يمكنني إرجاع استثناء لعميل في WCF؟

StackOverflow https://stackoverflow.com/questions/561981

سؤال

دعنا نقول أن لدي هذا في تنفيذ IinstanceProvider:

public void ReleaseInstance(InstanceContext instanceContext, object instance)
{
    try
    {
        unitOfWork.Commit();
    }
    catch (Exception)
    {
        unitOfWork.Rollback();
        throw;
    }
    finally
    {
        unitOfWork.Dispose();
    }
}

الذي - التي يرمي؛ لن يتم إرجاعها أبدا إلى العميل لأنه يتم استدعاءه بعد أن قامت الخدمة بعمل العمل وعاد البيانات إلى العميل، وبالتالي يتم القيام به. كيف يمكن أن أعود الاستثناء؟ أم أن هناك مكان أفضل للقيام بذلك؟

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

المحلول

أعتقد أنك تبحث في المكان الخطأ للقيام بذلك. أعتقد أن الاختيار الأفضل هو تطبيق واجهة IDISPatchMessageSpectorpection وإرفاقه بالمجموعة المكشوفة بواسطة خاصية MessageInsintbors على Dispathruntime (من خلال سلوك، على الأرجح).

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

نصائح أخرى

أنا لست على دراية بالمعاملات في WCF كما يجب أن أكون. ماذا في التعليمات البرمجية أعلاه بإرجاع النتائج إلى العميل؟ هل هو التراجع؟

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