private void EnlistProperties(XmlNode node, InternalMessageTraceInfo info)
 {
     if (node != null && info != null && node.HasChildNodes)
     {
         List <TraceDetailedProcessParameter.TraceProperty> list = new List <TraceDetailedProcessParameter.TraceProperty>();
         TraceDetailedProcessParameter.EnlistRecognizedElements(node, list, false, 0);
         if (node.Name != "Properties")
         {
             foreach (TraceDetailedProcessParameter.TraceProperty item in list)
             {
                 if (string.Compare(Utilities.TradeOffXmlPrefixForName(item.PropertyName), "ActivityId", true, CultureInfo.CurrentUICulture) == 0)
                 {
                     string text = TraceRecord.NormalizeActivityId(item.PropertyValue);
                     if (!string.IsNullOrEmpty(text) && TraceViewerForm.IsActivityDisplayNameInCache(text))
                     {
                         info.properties.Add(new TraceDetailedProcessParameter.TraceProperty(SR.GetString("FV_MSG2_LeftQ") + SR.GetString("FV_MSG2_ActivityName2") + SR.GetString("FV_MSG2_RightQ") + item.PropertyName, TraceViewerForm.GetActivityDisplayName(text), item.IsXmlAttribute, item.IsXmlFormat));
                     }
                     else
                     {
                         info.properties.Add(new TraceDetailedProcessParameter.TraceProperty(SR.GetString("FV_MSG2_LeftQ") + "ActivityId" + SR.GetString("FV_MSG2_RightQ") + item.PropertyName, text, item.IsXmlAttribute, item.IsXmlFormat));
                     }
                 }
                 else
                 {
                     info.properties.Add(new TraceDetailedProcessParameter.TraceProperty(SR.GetString("FV_MSG2_LeftQ") + node.Name + SR.GetString("FV_MSG2_RightQ") + item.PropertyName, item.PropertyValue, item.IsXmlAttribute, item.IsXmlFormat));
                 }
             }
         }
         else
         {
             info.properties.AddRange(list);
         }
     }
 }
 private void EnlistSoapHeaders(XmlNode node, InternalMessageTraceInfo info)
 {
     if (node != null && info != null && node.HasChildNodes)
     {
         TraceDetailedProcessParameter.EnlistRecognizedElements(node, info.headers, false, 0);
     }
 }
 public void ReloadMessageInfo(string messageXml)
 {
     if (!string.IsNullOrEmpty(messageXml))
     {
         try
         {
             XmlDocument xmlDocument = new XmlDocument();
             xmlDocument.LoadXml(messageXml);
             XmlElement documentElement    = xmlDocument.DocumentElement;
             InternalMessageTraceInfo info = new InternalMessageTraceInfo();
             ExtractKnownInfo(documentElement, info);
             if (documentElement.HasChildNodes)
             {
                 foreach (XmlNode childNode in documentElement.ChildNodes)
                 {
                     string a = Utilities.TradeOffXmlPrefixForName(childNode.Name);
                     if (a == "Envelope")
                     {
                         ExtractSoapEnvelop(childNode, info);
                     }
                     else
                     {
                         EnlistProperties(childNode, info);
                     }
                 }
             }
             DisplayInfo(info);
         }
         catch (XmlException e)
         {
             throw new TraceViewerException(SR.GetString("FV_ERROR"), e);
         }
     }
 }
 private void DisplayInfo(InternalMessageTraceInfo info)
 {
     if (info != null)
     {
         txtMethod.Text = info.method;
         txtSource.Text = info.source;
         txtTime.Text   = info.time.ToString(dateTimeFormat, CultureInfo.CurrentUICulture);
         txtType.Text   = info.type;
         foreach (TraceDetailedProcessParameter.TraceProperty property in info.properties)
         {
             listProperties.Items.Add(new ListViewItem(new string[2]
             {
                 property.PropertyName,
                 property.PropertyValue
             }));
         }
         foreach (TraceDetailedProcessParameter.TraceProperty parameter in info.parameters)
         {
             listParameters.Items.Add(new ListViewItem(new string[3]
             {
                 parameter.PropertyName,
                 parameter.PropertyValue,
                 (parameter.AdditionalData == null) ? string.Empty : parameter.AdditionalData.ToString()
             }));
         }
         foreach (TraceDetailedProcessParameter.TraceProperty header in info.headers)
         {
             listHeaders.Items.Add(new ListViewItem(new string[2]
             {
                 header.PropertyName,
                 header.PropertyValue
             }));
         }
     }
 }
 private void ExtractSoapBody(XmlNode node, InternalMessageTraceInfo info)
 {
     if (node != null && info != null && node.HasChildNodes)
     {
         info.method = node.ChildNodes[0].Name;
         EnlistParameters(node.ChildNodes[0], info);
     }
 }
 private void EnlistParameters(XmlNode node, InternalMessageTraceInfo info)
 {
     if (node != null && info != null && node.HasChildNodes)
     {
         foreach (XmlNode childNode in node.ChildNodes)
         {
             TraceDetailedProcessParameter.TraceProperty traceProperty = new TraceDetailedProcessParameter.TraceProperty(childNode.Name, childNode.InnerText, isAttribute: false, isXmlFormat: false);
             if (childNode.Attributes != null && childNode.Attributes["ValueType"] != null)
             {
                 traceProperty.AdditionalData = childNode.Attributes["ValueType"].Value;
             }
             info.parameters.Add(traceProperty);
         }
     }
 }
 private void ExtractSoapEnvelop(XmlNode node, InternalMessageTraceInfo info)
 {
     if (node != null && info != null && node.HasChildNodes)
     {
         foreach (XmlNode item in node)
         {
             string a = Utilities.TradeOffXmlPrefixForName(item.Name);
             if (!(a == "Header"))
             {
                 if (a == "Body")
                 {
                     ExtractSoapBody(item, info);
                 }
             }
             else
             {
                 EnlistSoapHeaders(item, info);
             }
         }
     }
 }
 private void ExtractKnownInfo(XmlElement element, InternalMessageTraceInfo info)
 {
     if (element != null && element.NodeType == XmlNodeType.Element && string.Compare(element.Name, "MessageLogTraceRecord", true, CultureInfo.CurrentUICulture) == 0 && info != null)
     {
         if (element.HasAttribute("Time"))
         {
             try
             {
                 info.time = DateTime.Parse(element.Attributes["Time"].Value, CultureInfo.CurrentUICulture);
             }
             catch (FormatException)
             {
             }
         }
         if (element.HasAttribute("Type"))
         {
             info.type = element.Attributes["Type"].Value;
         }
         if (element.HasAttribute("Source"))
         {
             info.source = element.Attributes["Source"].Value;
         }
     }
 }