public static Task <ResultReader> ProcessWithReader(string xmlMessage) { return(Task.Factory.StartNew( () => { var result = new ResultReader(); using (var reader = XmlReader.Create(new StringReader(xmlMessage))) { result.StartingTime = DateTime.Now; while (reader.Read() && (string.IsNullOrEmpty(result.Header) || string.IsNullOrEmpty(result.Body))) { if (reader.IsStartElement()) { if (reader.Name == "soap:Header") { result.Header = reader.ReadOuterXml(); } if (reader.Name == "soap:Body") { result.Body = reader.ReadOuterXml(); } } } result.EndingTime = DateTime.Now; } result.DifferenceTime = result.EndingTime.Subtract(result.StartingTime).ToString(); return result; } )); }
private static void ValidateWsaAddressing(ResultReader result) { if (!string.IsNullOrEmpty(result.Header)) { using (var reader = XmlReader.Create(new StringReader(result.Header))) { while (reader.Read()) { if (reader.IsStartElement()) { if (reader.Name == "wsa:To") { result.WsaTo = reader.Value; } else if (reader.Name == "wsa:MessageID") { result.MessageID = reader.Value; } else if (reader.Name == "wsa:From") { result.WsaFrom = reader.Value; } else if (reader.Name == "wsa:Action") { result.WsaAction = reader.Value; } else if (reader.Name == "wsa:ReplyTo") { result.WsaReplyTo = reader.Value; } else if (reader.Name == "wsa:RelatesTo") { result.WsaRelatesTo = reader.Value; } else if (reader.Name == "wsa:FaultTo") { result.WsaFaultTo = reader.Value; } else if (reader.Name == "wsa:AcceptFaultTo") { result.WsaAcceptFaultTo = reader.Value; } else if (reader.Name == "wsa:RetryMessages") { result.WsaRetryMessages = reader.Value; } } } } } }