Кто-нибудь видел эту проблему с protobuf-net через net.msmq - PullRequest
1 голос
/ 02 сентября 2010

Я вижу проблему, когда я отправляю большие сообщения через wcf net.msmq с использованием protobuf-net и получаю следующую ошибку:

При попытке десериализации сообщения форматировщик выдал исключение: Ошибка в теле десериализациисообщения-запроса для операции «DeliverData».Конечный элемент 'proto' из пространства имен 'http://mynamespace' ожидается

Если размер сообщения меньше 16 КБ, он работает

Если я удаляю protobuf-net, он работает

Если я переключаюсь на basichttp, он работает

Но если размер сообщения превышает 16 КБ, используя protobuf-net, а не net.msmq, я получаю сообщение об ошибке.Я установил maxBufferPoolSize и maxReceivedMessageSize достаточно большими, это не помогает.

Кто-нибудь еще видел это?Кто-нибудь еще использовал protobuf-net + net.msmq для больших сообщений и заставил его работать?

1 Ответ

0 голосов
/ 06 сентября 2010

Извинения за задержку - выходной и т. Д. Нет, я не видел конкретной проблемы с этим.Тот факт, что он вызывает «конечный элемент», говорит о том, что он находится в слое xml в данный момент (что происходит до того, как protobuf-net действительно включится).Есть ли у вас какой-нибудь способ, которым я мог бы надежно воспроизвести это?


После расследования проблема здесь заключается в квотах читателей WCF;MSMQ, похоже, исключение проглотило, поэтому не сразу стало очевидным.Это можно исправить в конфигурации или в коде (если вы настраиваете привязки вручную), ссылаясь на System.Runtime.Serialization и увеличивая привязку .ReaderQuotas.MaxArrayLength соответствующим образом.Максимально допустимое значение 2147483647.

...