Warum ist die Eigenschaft maxReceivedMessageSize beim Implementieren von WCF Streaming relevant? Da die Pufferung und Persistenz vom Consumer des Streams behandelt wird, beschäftigt sich WCF mit der Frage, wie groß oder wie lange eine einzelne Serviceoperation dauern könnte?
Ich arbeite an einem Projekt, das große Dateien von Server zu Client und zurück verarbeiten kann. Ich dachte mir WCF-Streaming ist eine ausgezeichnete Wahl, da es theoretisch unendliche Dateigrößen behandelt werden soll. Sowohl mein Client als auch mein Server haben transportMode (für die Bindung) auf "Gestreamt" und Nachrichten für Streams eingestellt. Dies ist jedoch nicht genug, da ich eine CommunicationException erhalte, die anzeigt, dass ich die Eigenschaft maxReceivedMessageSize erhöhen muss. Wenn man dem Ratschlag der Ausnahme folgt, kann man durch magisches Erhöhen der Eigenschaft alles perfekt arbeiten lassen.
Ich mache mir Sorgen, dass die WCF mich zwingt, meinen Dienst / meinen Client zu "kappen", obwohl das Streaming "unendlich" sein soll. Wenn eine Datei kommt, die größer ist als die Konfiguration meiner Bindung, wird dieselbe CommunicationException auftreten. Ich sehe nicht, warum WCF meine Kapazität, mit großen Dateien umzugehen, willkürlich einschränkt, "wann" und "wie" ich diese Dateien sende und speichere, ist jetzt "mein" Geschäft, weil ich einen Strom zu konsumieren habe, wie ich es wünsche.
>Vermisse ich etwas?
Laut der Dokumentation (zumindest was ich gefunden habe), ist der Grund, warum Sie "gezwungen" sind, die Größe Ihrer Nachricht einzuschränken, Sicherheit , um DoS-Angriffe zu vermeiden, indem Sie auch senden große Nachrichten und überschwemmen das System.
Als Abwehrmechanismus begrenzt maxReceivedMessageSize das Maximum zulässige Größe der Nachrichten beim Empfang. Der Standard maxReceivedMessageSize ist 64 KB, was normalerweise zu niedrig ist Streaming-Szenarien. Quelle
Die maximale Größe für maxReceivedMessageSize beträgt 9,223,372,036,854,775,807 Bytes.
Hoffe, das hilft.
Tags und Links wcf streaming buffering maxreceivedmessagesize