Pregunta

estoy viendo un problema en el envío mensajes de gran tamaño a través net.msmq WCF utilizando protobuf-net y obtener el siguiente error:

El formateador inició una excepción al intentar deserializar el mensaje: Error en el cuerpo del mensaje de solicitud de deserializar para la operación 'DeliverData'. elemento extremo 'proto' del espacio de nombres ' http: // MyNamespace ' espera

Si el tamaño del mensaje es menos de 16k, funciona

Si quito protobuf-net, funciona

Si cambio a basichttp, funciona

Pero si el tamaño del mensaje es más de 16k, utilizando protobuf-net, sobre net.msmq, me sale el error. He puesto maxBufferPoolSize y maxReceivedMessageSize suficientemente grande, no ayuda.

¿Alguien más ha visto esto? Alguien más ha utilizado protobuf-Net + net.msmq de mensajes de gran tamaño y conseguido que funcione?

¿Fue útil?

Solución

Disculpas por el retraso - vacaciones, etc. No, no he visto un problema específico con eso. El hecho de que se llama el "elemento Fin" sugiere que es en la capa de XML en el momento (que está en frente protobuf-net realmente se involucra). ¿Tiene alguna manera de que yo pudiera reproducir de forma fiable esto?


Tras la investigación, el problema aquí parece ser lectores-cuotas de un WCF; la excepción parece ser tragados por MSMQ, por lo que no era inmediatamente obvio. Esto se puede solucionar en la configuración , o en el código (si está configurando su encuadernaciones manualmente) haciendo referencia a System.Runtime.Serialization y el aumento de la unión de .ReaderQuotas.MaxArrayLength adecuadamente. El valor máximo permitido es 2147483647.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top