Frage

Ich sehe ein Problem, wo ich große Nachrichten über wcf net.msmq mit protobuf-net und die folgenden Fehler senden:

Der Formatierer hat eine Ausnahme bei dem Versuch, die Nachricht deserialisieren: Fehler in Deserialisieren Körper Anforderungsnachricht für den Betrieb ‚DeliverData‘. End-Element 'proto' von Namespace ' http: // MyNamespace ' erwartet

Wenn die Nachrichtengröße unter 16k, es funktioniert

Wenn ich protobuf-net entfernen, es funktioniert

Wenn ich basichttp wechseln, es funktioniert

Aber wenn Nachrichtengröße über 16k ist, protobuf-net mit, über net.msmq ich den Fehler. Ich habe festgelegt MaxBufferPoolSize und MaxReceivedMessageSize ausreichend groß, spielt es keine Hilfe.

Hat jemand gesehen? Hat jemand anderes protobuf-net + net.msmq für große Nachrichten und bekommen es an die Arbeit?

verwendet
War es hilfreich?

Lösung

Wir entschuldigen uns für die Verzögerung - Urlaub usw. Nein, ich habe nicht ein konkretes Problem mit gesehen. Die Tatsache, dass es das „End-Element“, ruft legt nahe, dass es zu der Zeit in der XML-Schicht (die vor protobuf-net ist wirklich bekommt beteiligt ist). Haben Sie eine Art und Weise haben, dass ich zuverlässig diese reproduzieren kann?


Nach der Untersuchung erscheint das Problem hier ein WCF Leser-Quoten zu sein; die Ausnahme scheint von MSMQ geschluckt werden, so dass nicht sofort klar war. Dies kann behoben werden in Konfiguration oder in Code (wenn Sie Ihre Bindungen einrichten manuell) durch entsprechend System.Runtime.Serialization und die Erhöhung der Bindung des .ReaderQuotas.MaxArrayLength referenzieren. Der maximal zulässige Wert ist 2147483647.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top