C# 如何在WCF中解码多部分/相关响应?

C# 如何在WCF中解码多部分/相关响应?,c#,.net,wcf,web-services,soap,C#,.net,Wcf,Web Services,Soap,我有一个Web服务,它将结果返回为multipart/related: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_FCAC227A0F1D534C2D1349803588825; type="application/soap+xml"; start="<0.urn:uuid:FCAC227A0F1D534C2D1349803

我有一个Web服务,它将结果返回为
multipart/related

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_FCAC227A0F1D534C2D1349803588825;
type="application/soap+xml"; start="<0.urn:uuid:FCAC227A0F1D534C2D1349803588826@apache.org>"; action="urn:MyServiceAction"
Date: Tue, 09 Oct 2012 17:26:28 GMT
Content-Length: 2961

--MIMEBoundaryurn_uuid_FCAC227A0F1D534C2D1349803588825
Content-Type: application/soap+xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: <0.urn:uuid:FCAC227A0F1D534C2D1349803588826@apache.org>

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
[... snipped ...]
</soapenv:Envelope>
--MIMEBoundaryurn_uuid_FCAC227A0F1D534C2D1349803588825--
HTTP/1.1200正常
服务器:ApacheCoote/1.1
内容类型:多部分/相关;边界=MIMEBoundaryurn_uuid_fcac227a0f1d534c2d13498035825;
type=“应用程序/soap+xml”;start=“”;action=“urn:MyServiceAction”
日期:2012年10月9日星期二17:26:28 GMT
内容长度:2961
--MIMBOUNDARYURN_uuid_FCAC227A0F1D534C2D134980358825
内容类型:应用程序/soap+xml;字符集=UTF-8
内容传输编码:8比特
内容ID:
[…剪断…]
--MIMBOUNDARYURN_uuid_FCAC227A0F1D534C2D134980358825--
WCF似乎不支持这一点。我正在使用自定义绑定,
TextMessageEncodingBindingElement
弹出一条消息,告诉我内容类型不受支持
MtomMessageEncodingBindingElement
也会抱怨,因为它不期望
application/soap+xml
而是
application/xop+xml


是否有一个MessageEncoder可以正确处理
应用程序/soap+xml
多部分/相关的
?或者有没有一种简单的方法可以让我在将负载发送到
TextMessageEncodingBindingElement
之前挂接到管道并提取负载?

有一个将SOAP与MIME相结合的标准,称为带附件的SOAP(SwA)。如果这是您正在使用的,这里有一个自定义编码器:
即使不是SwA,自定义编码器代码也可能是一个很好的起点。

谢谢,自定义编码器是一个很好的起点,因为它完成了MIME解析,并允许我正确构建其他部分。