任何人都可以通过net.msmq看到protobuf-net的这个问题

时间:2010-09-01 22:55:54

标签: wcf protobuf-net netmsmqbinding

我发现使用protobuf-net在wcf net.msmq上发送大量消息时出现问题,并出现以下错误:

格式化程序在尝试反序列化消息时抛出异常:反序列化操作“DeliverData”的请求消息体时出错。来自命名空间“http://mynamespace”的结尾元素“proto”预期

如果邮件大小低于16k,则可以使用

如果我删除protobuf-net,它可以正常工作

如果我切换到basichttp,它可以正常工作

但如果消息大小超过16k,使用protobuf-net,超过net.msmq,我就会收到错误消息。我已将maxBufferPoolSize和maxReceivedMessageSize设置得足够大,但没有帮助。

有没有人见过这个?有没有其他人使用protobuf-net + net.msmq来获取大型消息并让它发挥作用?

1 个答案:

答案 0 :(得分:0)

道歉延迟 - 假期等等。不,我没有看到具体的问题。它调出“结束元素”这一事实表明它当时位于xml层中(这是在protobuf-net 真正参与之前)。你有什么方法可以可靠地重现这个吗?


经过调查,这里的问题似乎是WCF的读者配额;这个例外似乎被MSMQ吞噬了,因此并不是很明显。这可以通过引用System.Runtime.Serialization并适当增加绑定.ReaderQuotas.MaxArrayLength来修复in configuration或代码(如果您手动设置绑定)。允许的最大值为2147483647