1

我看到一个问题,我使用 protobuf-net 通过 wcf net.msmq 发送大消息并收到以下错误:

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

如果消息大小低于 16k,它可以工作

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

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

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

有没有其他人看过这个?有没有其他人使用 protobuf-net + net.msmq 处理大消息并让它工作?

4

1 回答 1

1

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


经过调查,这里的问题似乎是 WCF 的读者配额;该异常似乎被 MSMQ 吞没了,所以不是很明显。这可以通过引用 System.Runtime.Serialization 并适当地增加绑定在配置中或代码(如果您手动设置绑定)中修复。.ReaderQuotas.MaxArrayLength最大允许值为2147483647

于 2010-09-06T05:12:16.027 回答