استرجاع MessageID تلقائيًا بواسطة WCF عند استخدام WSHTTPBINDING

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

سؤال

أستخدم WCF لاستهلاك خدمة ويب تحترم نموذج WS (ثم استخدم WSHTTPBINDING BINDING). هذا النموذج ينطوي على أ MessageID ليتم تعيينه في رأس طلب الصابون ونفس المعرف الموجود في رأس الاستجابة في RelatesTo مجال. أرغب في تسجيل الطلب الذي قدمته مع هذا MessageId ولكن لا يمكنني إيجاد طريقة لاسترداد MessageId الذي تم تعيينه بواسطة WCF إما هل يمكنني تعيينه يدويًا. تمكنت من الحصول عليها من الاستجابة من خلال تعيين السمة الصحيحة في الحقل ، لكن القيام بذلك بناءً على الطلب ، اسمحوا لي أن أقوم بتعيينه ، لكن يبدو أن WCF يتجاوزها ولا تسمح لي بالوصول إلى حدث القيمة الجديد بعد إجراء المكالمة.

اي فكرة ؟

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

المحلول

لم أجد طريقة لاسترداد معرف الرسائل المحدد تلقائيًا أيضًا ، ولكن يمكنك تعيينه بسهولة يدويًا:

using (new System.ServiceModel.OperationContextScope((System.ServiceModel.IContextChannel)base.Channel))
    {
        m_lastMessageId = new System.Xml.UniqueId();
        System.ServiceModel.OperationContext.Current.OutgoingMessageHeaders.MessageId = m_lastMessageId;
        // call here the request
    }

امل ان يساعد

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