public override Message ReadMessage(System.IO.Stream stream, int maxSizeOfHeaders, string contentType) { VerifyOperationContext(); if (contentType.ToLower().StartsWith("multipart/related")) { byte[] ContentBytes = new byte[stream.Length]; stream.Read(ContentBytes, 0, ContentBytes.Length); MimeContent Content = _MimeParser.DeserializeMimeContent(contentType, ContentBytes); if (Content.Parts.Count >= 2) { MemoryStream ms = new MemoryStream(Content.Parts[0].Content); Message Msg = ReadMessage(ms, int.MaxValue, Content.Parts[0].ContentType); Msg.Properties.Add(SwaEncoderConstants.AttachmentProperty, Content.Parts[1].Content); return(Msg); } else { throw new ApplicationException("Invalid mime message sent! Soap with attachments makes sense, only, with at least 2 mime message content parts!"); } } else if (contentType.ToLower().StartsWith("text/xml")) { XmlReader Reader = XmlReader.Create(stream); return(Message.CreateMessage(Reader, maxSizeOfHeaders, MessageVersion)); } else { throw new ApplicationException( string.Format( "Invalid content type for reading message: {0}! Supported content types are multipart/related and text/xml!", contentType)); } }
public override Message ReadMessage(System.IO.Stream stream, int maxSizeOfHeaders, string contentType) { try { VerifyOperationContext(); if (contentType.ToLower().StartsWith("multipart/related")) { byte[] ContentBytes = new byte[stream.Length]; stream.Read(ContentBytes, 0, ContentBytes.Length); MimeContent Content = _MimeParser.DeserializeMimeContent(contentType, ContentBytes); if (Content.Parts.Count >= 2) { MemoryStream ms = new MemoryStream(Content.Parts[0].Content); Message Msg = ReadMessage(ms, int.MaxValue, Content.Parts[0].ContentType); //Msg.Properties.Add(SwaEncoderConstants.AttachmentProperty, Content.Parts[1].Content); List <SwaAttachment> alist = new List <SwaAttachment>(); for (int i = 1; i < Content.Parts.Count; i++) { MimePart part = Content.Parts[i]; SwaAttachment attachement = new SwaAttachment(); attachement.ContentBinary = part.Content; attachement.ContentType = part.ContentType; attachement.ContentId = part.ContentId; alist.Add(attachement); } Msg.Properties.Add(SwaEncoderConstants.AttachmentProperty, alist); return(Msg); } else { throw new ApplicationException("Invalid mime message sent! Soap with attachments makes sense, only, with at least 2 mime message content parts!"); } } else if (contentType.ToLower().StartsWith("text/xml")) { XmlReader Reader = XmlReader.Create(stream); return(Message.CreateMessage(Reader, maxSizeOfHeaders, MessageVersion)); } else { throw new ApplicationException( string.Format( "Invalid content type for reading message: {0}! Supported content types are multipart/related and text/xml!", contentType)); } } catch (Exception e) { SwaLogMgt.SetLog(this, e); //Console.WriteLine(e.ToString()); return(null); } }