C # WCF SOAP Вложения Проблемы - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь создать службу WCF для приема сообщений от старого веб-сервиса.Я много занимался поиском по этой проблеме, но, похоже, не могу найти ее из-за отсутствия ключевых слов, возможно

Я пытаюсь использовать формат:

----MIME_boundary
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-Id: <thexml.xml>
<?xml version='1.0' encoding='UTF-8'?>
<soap:Envelope
xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <HEAD_LABEL>
            <DOCUMENT docID = "1234">
                <ATTACHMENTS>
                    <ATTACHMENT href = "cid:itsme@website.com"/>
                </ATTACHMENTS>
            </DOCUMENT>
        </HEAD_LABEL>
    </soap:Body>
</soap:Envelope>
----MIME_boundary
Content-Type: text/xml
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="1234.XML"
Content-Id: <cid:itsme@website.com>

<SOMEXML>
<UNIMPORTANT>GG</UNIMPORTANT>
</SOMXML>
  ----MIME_boundary--

У меня есть две основные проблемы:

  1. Моя реализация выдает мне эту ошибку при попытке использовать из-за моего использования XmlSerializerFormat.См. Ниже, я не уверен, как использовать другой тип, чтобы иметь жесткую структуру XML, которая мне требуется.

    Входные данные не являются допустимой строкой Base-64, поскольку она содержит неосновной 64-символ, болеечем два символа заполнения, или недопустимый символ среди символов заполнения.

    В документе XML (8, 51) есть ошибка, которая является моим "ATTACHMENT href =" cid: itsme@website.com"/>"

Как я могу использовать это сообщение с WCF C #?

Как я могу воспроизвести это в SOAPUI или почтальоне, я не могу связать прикрепляемый файл с «Part» внутри атрибута ATTACHMENT.

Что касается моей реализации, то она пытаетсяиспользуйте XmlSerializerFormat, чтобы позволить мне создать мой формат точно такой же, как я ожидаю.Но это ошибка XmlSerializerFormat.ImportWebServices.cs:

namespace SOAPY.WebService
{
    [ServiceContract(Namespace = "")]
    [XmlSerializerFormat]
    public interface IImportWebService
    {

        [OperationContract]
        [XmlSerializerFormat]
        [WebInvoke(Method = "POST", UriTemplate = "UploadDoc")]
        ResponseBase ReceiveAttachment(Result xmlIN);

    }

 [DataContract(Namespace = "")]
    [MessageContract(IsWrapped = false)]
    public class Result
    {
        [DataMember]
        [MessageBodyMember]
        [XmlElement("HEAD_LABEL")]
        public HeadDoc headDoc { get; set; }
    };



    [DataContract(Namespace = "")]
    public class HeadDoc
    {
        [DataMember]
        [MessageBodyMember]
        [XmlElement("DOCUMENT")]
        public DocumentType document { get; set; }
    }

    [DataContract(Namespace = "")]
    [MessageContract(IsWrapped = false)]
    public class DocumentType
    {
        [DataMember]
        [MessageBodyMember]
        [XmlElement("ATTACHMENTS")]
        public List<Attach> attachments { get; set; }

    }

    [DataContract(Namespace = "")]
    [MessageContract(IsWrapped = false)]
    public class Attach
    {
        [DataMember]
        [MessageBodyMember]
        [XmlAttribute("href")]
        public byte[] href { get; set; }
    }
}

Любая помощь в том, как я могу использовать вложение, подробно описанная мною, как я объяснил, будет очень полезна

...