public static TrackingIdHeader Read(MessageHeaders messageHeaders) { TrackingIdHeader trackingIdHeader; if (!TrackingIdHeader.TryRead(messageHeaders, out trackingIdHeader)) { throw new ArgumentException(SRClient.TrackingIDHeaderMissing, "messageHeaders"); } return(trackingIdHeader); }
internal static string GetTrackingId(MessageProperties messageProperties, MessageHeaders messageHeaders, WebOperationContext webOperationContext) { string id; TrackingIdMessageProperty trackingIdMessageProperty; TrackingIdHeader trackingIdHeader; if (!TrackingIdMessageProperty.TryGet <TrackingIdMessageProperty>(messageProperties, out trackingIdMessageProperty)) { string str = null; if (webOperationContext != null) { str = webOperationContext.IncomingRequest.Headers.Get("TrackingId"); } if (TrackingIdHeader.TryRead(messageHeaders, out trackingIdHeader)) { id = trackingIdHeader.Id; } else if (messageHeaders.RelatesTo != null) { Guid trackingId = TrackingContext.GetTrackingId(messageHeaders.RelatesTo); id = TrackingContext.AppendRoleInstanceInformationToTrackingId(trackingId.ToString()); } else if (messageHeaders.MessageId != null) { Guid guid = TrackingContext.GetTrackingId(messageHeaders.MessageId); id = TrackingContext.AppendRoleInstanceInformationToTrackingId(guid.ToString()); } else if (string.IsNullOrEmpty(str)) { Guid guid1 = Guid.NewGuid(); id = TrackingContext.AppendRoleInstanceInformationToTrackingId(guid1.ToString()); } else { id = TrackingContext.AppendRoleInstanceInformationToTrackingId(str); } TrackingIdMessageProperty.TryAdd(messageProperties, id); } else { id = trackingIdMessageProperty.Id; } return(id); }