private static object DeserializeRequest20(string templateXml, string contentXml) { var template = new XRoadXmlTemplate(templateXml, typeof(IService).GetTypeInfo().GetMethod("Service1")); return(DeserializeRequest(templateXml, contentXml, Globals.ServiceManager20, "Service1", (msgr, xmlr) => { var message = Globals.ServiceManager20.CreateMessage(); message.XmlTemplate = template; using (message) { msgr.Read(message); messageFormatter.MoveToPayload(xmlr, XName.Get("Service1", Globals.ServiceManager20.ProducerNamespace)); return serviceMap20.DeserializeRequest(xmlr, message); } })); }
/// <summary> /// Deserializes X-Road fault from message which is known to contain fault. /// </summary> public static IXRoadFault DeserializeXRoadFault(this IServiceMap serviceMap, XRoadMessage message, IMessageFormatter messageFormatter) { message.ContentStream.Position = 0; using (var reader = XmlReader.Create(message.ContentStream)) { messageFormatter.MoveToPayload(reader, message.RootElementName); var responseName = serviceMap.ResponseDefinition.Content.Name; if (!reader.MoveToElement(3, responseName)) { throw new InvalidQueryException($"X-Road fault should be wrapped inside `{responseName}` element."); } return(reader.ReadXRoadFault(4)); } }