我正在开发WCF服务,以使用MTOM编码发送和接收文件。我已按照以下配置启动并运行所有程序。
<customBinding>
<binding name="<omitted>">
<mtomMessageEncoding messageVersion="Soap12" />
<httpTransport maxReceivedMessageSize="2097152" />
</binding>
</customBinding>
但是,如果我发送的文件小于768字节,那么该文件将使用Base64进行编码,而不是使用MTOM编码,并作为消息本身的一部分发送。
有人知道如何强制WCF对小于768字节的文件使用MTOM编码吗?
答案 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;
但它甚至似乎都没有在该类中使用。