如何强制WCF对小于768字节的文件使用MTOM编码?

时间:2018-06-22 06:56:16

标签: c# wcf soap

我正在开发WCF服务,以使用MTOM编码发送和接收文件。我已按照以下配置启动并运行所有程序。

<customBinding>
    <binding name="<omitted>">
          <mtomMessageEncoding messageVersion="Soap12" />
          <httpTransport maxReceivedMessageSize="2097152" />
    </binding>
</customBinding>

但是,如果我发送的文件小于768字节,那么该文件将使用Base64进行编码,而不是使用MTOM编码,并作为消息本身的一部分发送。

有人知道如何强制WCF对小于768字节的文件使用MTOM编码吗?

1 个答案:

答案 0 :(得分:0)

来自the WCF forum on MSDN: Force WCF to use MTOM "optimization" for small messages

  

我认为,将二进制数据作为xop而不是base64编码包含在内的当前最小大小为768字节。这在MtomMessageEncoder使用的XmlMtomWriter类中几乎是硬编码的。而且XMLMtomWriter是System.Xml程序集的内部类,您不能扩展此类来消除此限制。

来源:

internal class XmlMtomWriter : XmlDictionaryWriter, IXmlMtomWriterInitializer
{
    private const int MaxInlinedBytes = 767;

但它甚至似乎都没有在该类中使用。