我有一个简单的自托管WCF web服务和客户端,我正试图让它们使用MTOM来发送和接收文件,特别是图像。我检查了Microsoft示例,基本上,他们所做的只是将绑定的配置文件设置为使用MTOM作为MessageEncoding
。我也这样做了,并遵循了大量的教程和文章,如果我检查
(selfHost.Description.Endpoints[0].Binding as WSHttpBinding).MessageEncoding
属性,正如我所期望的那样,它是MTOM。然而,当我通过实现和IClientMEssageInspector
来检查我的客户端发送和接收的消息时,我发现它们是作为普通的文本soap消息发送的。我可以在<Image>
节点内的消息中看到巨大的base64字符串。当我在发送同一文件后检查Microsoft MTOM示例客户端的消息时,没有base64字符串,请求的正文只显示<s:Body>... secuencia ...</s:Body>
(我猜在英语中它会说"sequence")。
我不知道该怎么做才能使它正常工作。我尝试过不同的文件大小,从几KB到将近2MB。我尝试过通过代码而不是配置文件设置MEssageEncoding
,但仍然没有成功。
你知道为什么它可能不起作用吗?如果你需要更多关于这个问题的信息,请告诉我。
提前谢谢。
创建时
<binding name="mybindingname" messageEncoding="MTOM" ...>,
您是否像下面这样将绑定名称添加到服务中?
<service>
<endPoint bindingConfiguration="mybindingname" ... />