Mtom编码和BasicHttpBinding不起作用的WCF配置-正在进行base64编码
如果有人能说明这一点,我将不胜感激: 我想通过Mtom将二进制数据上传到服务 如果我使用以下配置端点绑定:Mtom编码和BasicHttpBinding不起作用的WCF配置-正在进行base64编码,wcf,Wcf,如果有人能说明这一点,我将不胜感激: 我想通过Mtom将二进制数据上传到服务 如果我使用以下配置端点绑定: <wsHttpBinding> <binding name="WsHttpMtomBinding" messageEncoding="Mtom" /> Mtom工作-我可以在Fiddler中看到二进制内容是用Mtom发送的 如果我将其配置为: <basicHttpBinding> <binding name="WsHttp
<wsHttpBinding>
<binding name="WsHttpMtomBinding" messageEncoding="Mtom" />
Mtom工作-我可以在Fiddler中看到二进制内容是用Mtom发送的
如果我将其配置为:
<basicHttpBinding>
<binding name="WsHttpMtomBinding" messageEncoding="Mtom" />
如果我查看Fiddler发送的内容,它将被base64编码
我了解到,如果消息大小小于某个大小,WCF会进行base64编码。我确保二进制内容足够大。我必须使用basicHttpBinding,因为服务不在我的控制之下
为什么要对其进行base64编码?发现问题:
问题是提供给我的WSDL。WSDL中的类型设置为HexBinary而不是Base64Binary。WCF将仅识别base64以使用MTOM进行优化。此外,如果二进制数据低于1024字节,它将不使用MTOM。(尽管如此,消息的标题仍将显示为MTOM)
摘自MSDN:
“MTOM的目的是对SOAP消息进行编码,以优化base64编码的数据。以下是约束列表:
R4151:可以优化包含base64编码数据的任何元素信息项
B4152:WCF优化包含base64编码数据且长度超过1024字节的元素信息项。”
希望这对别人有帮助。我花了数小时的时间来解决这个问题。发现了问题:
问题是提供给我的WSDL。WSDL中的类型设置为HexBinary而不是Base64Binary。WCF将仅识别base64以使用MTOM进行优化。此外,如果二进制数据低于1024字节,它将不使用MTOM。(尽管如此,消息的标题仍将显示为MTOM)
摘自MSDN:
“MTOM的目的是对SOAP消息进行编码,以优化base64编码的数据。以下是约束列表:
R4151:可以优化包含base64编码数据的任何元素信息项
B4152:WCF优化包含base64编码数据且长度超过1024字节的元素信息项。”
希望这对别人有帮助。我花了好几个小时才弄明白