private object DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, bool isRequest) { object val; try { val = part.ReadObject(reader); } catch (System.InvalidOperationException e) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.Format(SR.SFxInvalidMessageBodyErrorDeserializingParameter, part.Description.Namespace, part.Description.Name), e)); } catch (System.Runtime.Serialization.InvalidDataContractException e) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException( SR.Format(SR.SFxInvalidMessageBodyErrorDeserializingParameter, part.Description.Namespace, part.Description.Name), e)); } catch (System.FormatException e) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( CreateDeserializationFailedFault( SR.Format(SR.SFxInvalidMessageBodyErrorDeserializingParameterMore, part.Description.Namespace, part.Description.Name, e.Message), e)); } catch (System.Runtime.Serialization.SerializationException e) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( CreateDeserializationFailedFault( SR.Format(SR.SFxInvalidMessageBodyErrorDeserializingParameterMore, part.Description.Namespace, part.Description.Name, e.Message), e)); } return(val); }
protected override object DeserializeBody(XmlDictionaryReader reader, MessageVersion version, string action, MessageDescription messageDescription, object[] parameters, bool isRequest) { if (reader == null) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("reader")); } if (parameters == null) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("parameters")); } if (reader.EOF) { return(null); } if ((isRequest && this.isBareMessageContractRequest) || (!isRequest && isBareMessageContractReply)) { return(DeserializeBareMessageContract(reader, parameters, isRequest)); } object returnValue = null; if (isRequest || (isWrapped && !useAspNetAjaxJson)) { ValidateTypeObjectAttribute(reader, isRequest); returnValue = DeserializeBodyCore(reader, parameters, isRequest); } else { if (useAspNetAjaxJson) { ReadRootElement(reader); } if (useAspNetAjaxJson && messageDescription.IsVoid) { ReadVoidReturn(reader); } else if (replyMessageInfo.ReturnPart != null) { PartInfo part = replyMessageInfo.ReturnPart; DataContractJsonSerializer serializer = part.Serializer as DataContractJsonSerializer; if (useAspNetAjaxJson) { serializer = RecreateDataContractJsonSerializer(serializer, JsonGlobals.dString); VerifyIsStartElement(reader, JsonGlobals.dString); } else { serializer = RecreateDataContractJsonSerializer(serializer, JsonGlobals.rootString); VerifyIsStartElement(reader, JsonGlobals.rootString); } if (serializer.IsStartObject(reader)) { try { returnValue = part.ReadObject(reader, serializer); } catch (System.InvalidOperationException e) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( System.ServiceModel.SR.GetString(System.ServiceModel.SR.SFxInvalidMessageBodyErrorDeserializingParameter, part.Description.Namespace, part.Description.Name), e)); } catch (System.Runtime.Serialization.InvalidDataContractException e) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new System.Runtime.Serialization.InvalidDataContractException( System.ServiceModel.SR.GetString(System.ServiceModel.SR.SFxInvalidMessageBodyErrorDeserializingParameter, part.Description.Namespace, part.Description.Name), e)); } catch (System.FormatException e) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError( OperationFormatter.CreateDeserializationFailedFault( System.ServiceModel.SR.GetString(System.ServiceModel.SR.SFxInvalidMessageBodyErrorDeserializingParameterMore, part.Description.Namespace, part.Description.Name, e.Message), e)); } catch (System.Runtime.Serialization.SerializationException e) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError( OperationFormatter.CreateDeserializationFailedFault( System.ServiceModel.SR.GetString(System.ServiceModel.SR.SFxInvalidMessageBodyErrorDeserializingParameterMore, part.Description.Namespace, part.Description.Name, e.Message), e)); } } } else if (replyMessageInfo.BodyParts != null) { ValidateTypeObjectAttribute(reader, isRequest); returnValue = DeserializeBodyCore(reader, parameters, isRequest); } while (reader.IsStartElement()) { OperationFormatter.TraceAndSkipElement(reader); } if (useAspNetAjaxJson) { reader.ReadEndElement(); } } return(returnValue); }
object DeserializeBareMessageContract(XmlDictionaryReader reader, object[] parameters, bool isRequest) { MessageInfo messageInfo; if (isRequest) { messageInfo = this.requestMessageInfo; } else { messageInfo = this.replyMessageInfo; } if (useAspNetAjaxJson && !isRequest) { ReadRootElement(reader); if (messageInfo.BodyParts.Length == 0) { ReadVoidReturn(reader); } } if (messageInfo.BodyParts.Length > 0) { PartInfo part = messageInfo.BodyParts[0]; DataContractJsonSerializer serializer = part.Serializer as DataContractJsonSerializer; if (useAspNetAjaxJson && !isRequest) { serializer = RecreateDataContractJsonSerializer(serializer, JsonGlobals.dString); } else { serializer = RecreateDataContractJsonSerializer(serializer, JsonGlobals.rootString); } while (reader.IsStartElement()) { if (serializer.IsStartObject(reader)) { try { parameters[part.Description.Index] = part.ReadObject(reader, serializer); break; } catch (System.InvalidOperationException e) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( System.ServiceModel.SR.GetString(System.ServiceModel.SR.SFxInvalidMessageBodyErrorDeserializingParameter, part.Description.Namespace, part.Description.Name), e)); } catch (System.Runtime.Serialization.InvalidDataContractException e) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException( System.ServiceModel.SR.GetString(System.ServiceModel.SR.SFxInvalidMessageBodyErrorDeserializingParameter, part.Description.Namespace, part.Description.Name), e)); } catch (System.FormatException e) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError( OperationFormatter.CreateDeserializationFailedFault( System.ServiceModel.SR.GetString(System.ServiceModel.SR.SFxInvalidMessageBodyErrorDeserializingParameterMore, part.Description.Namespace, part.Description.Name, e.Message), e)); } catch (System.Runtime.Serialization.SerializationException e) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError( OperationFormatter.CreateDeserializationFailedFault( System.ServiceModel.SR.GetString(System.ServiceModel.SR.SFxInvalidMessageBodyErrorDeserializingParameterMore, part.Description.Namespace, part.Description.Name, e.Message), e)); } } else { OperationFormatter.TraceAndSkipElement(reader); } } while (reader.IsStartElement()) { OperationFormatter.TraceAndSkipElement(reader); } } if (this.useAspNetAjaxJson && !isRequest) { reader.ReadEndElement(); } return(null); }
private object DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, bool isRequest) { object val; try { val = part.ReadObject(reader); } catch (System.InvalidOperationException e) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.Format(SR.SFxInvalidMessageBodyErrorDeserializingParameter, part.Description.Namespace, part.Description.Name), e)); } catch (System.Runtime.Serialization.InvalidDataContractException e) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException( SR.Format(SR.SFxInvalidMessageBodyErrorDeserializingParameter, part.Description.Namespace, part.Description.Name), e)); } catch (System.FormatException e) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( OperationFormatter.CreateDeserializationFailedFault( SR.Format(SR.SFxInvalidMessageBodyErrorDeserializingParameterMore, part.Description.Namespace, part.Description.Name, e.Message), e)); } catch (System.Runtime.Serialization.SerializationException e) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( OperationFormatter.CreateDeserializationFailedFault( SR.Format(SR.SFxInvalidMessageBodyErrorDeserializingParameterMore, part.Description.Namespace, part.Description.Name, e.Message), e)); } return val; }