Кто-нибудь видел эту проблему с Protobuf-Net по Net.msmq
-
26-09-2019 - |
Вопрос
Я вижу проблему, где я отправляю большие сообщения над WCF Net.msmq с помощью Protobuf-Net и получите следующую ошибку:
Форматирован сбросил исключение, пытаясь десертифицировать сообщение: ошибка в десериализующемся корпусе запроса сообщения для работы «davortdata». Конечный элемент «прото» из пространства имен 'http: // myjamespace' ожидал
Если размер сообщения до 16K, он работает
Если я удаляю Protobuf-Net, это работает
Если я переключаюсь на Basichttp, это работает
Но если размер сообщения превышает 16K, используя Protobuf-Net, через Net.msmq, я получаю ошибку. Я установил maxbufferpoolsize и maxreceedmessages, достаточно большой, это не помогает.
Кто-нибудь еще видел это? Кто-нибудь еще использовал ProTobuf-Net + Net.msmq для больших сообщений и получил его на работу?
Решение
Извиняюсь за задержку - отпуск и т. Д. Нет, я не видел определенную проблему с этим. Тот факт, что он вызывает «конечный элемент», предполагает, что он находится в XML-слое в то время (который до Protobuf-Net В самом деле принимает участие). У вас есть способ, которым я мог надежно воспроизвести это?
После расследования проблемы здесь, кажется, читатель WCF; Исключение, по-видимому, проглатывается MSMQ, поэтому не было сразу очевидно. Это может быть исправлено в конфигурации, или в коде (если вы устанавливаете привязки вручную), ссылаясь на System.runtime.Serialization и увеличение связывания .ReaderQuotas.MaxArrayLength
соответствующим образом. Максимально допустимое значение 2147483647
.