C#WCF SOAP附件问题

时间:2018-06-05 21:05:18

标签: c# wcf soap attachment mime

我正在尝试创建一个WCF服务来接受来自旧Web服务的消息。我已经在这个问题上做了很多搜索,但似乎由于缺少关键字而无法找到它

我正在尝试使用以下格式:

----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)中存在错误,这是我的错误 &#34; ATTACHMENT href =&#34; cid:itsme@website.com" /&gt;&#34;

  2. 如何使用WCF C#消费此消息?

    1. 我如何在SOAPUI或postman中复制它,我似乎无法将我附加的文件与&#34; Part&#34;在ATTACHMENT属性中。
    2. 至于我的实现,它试图使用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; }
          }
      }
      

      关于我如何使用我所解释的方式详细说明的附件的任何帮助都会有很大的帮助

0 个答案:

没有答案