استرجاع MessageID تلقائيًا بواسطة WCF عند استخدام WSHTTPBINDING
-
29-09-2019 - |
سؤال
أستخدم 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
}
امل ان يساعد
لا تنتمي إلى StackOverflow