Ein weiteres "Die maximale string-Länge des Inhalts Quote (8192) wurde überschritten beim Lesen von XML-Daten." Problem mit WCF und Silverlight 4
Ich habe keine Probleme beim abrufen einer großen Menge von Daten, sondern senden Sie es zurück an die service zeigt diesen Fehler. Ich habe versucht, indem Sie das element, um sowohl die web -.config und servicereferences.clientconfig und es nicht erkannt, entweder. An einer Stelle bekam ich eine Nachricht über das hinzufügen von readerQuotas zu bindingElementExtensions, aber ich kann nicht finden, etwas sinnvolles, wie dies zu tun. Ich fand Beiträge sagen, ich hatte zum ändern der devenv.exe.config und so, aber zu tun, dass gehimmelt VS. Ich hab schon versucht das zu lösen, dies für zwei Tage, so dass jede Hilfe wäre sehr geschätzt.
edit: hier der binding-Abschnitt der web.config:
<bindings>
<customBinding>
<binding name="QaRiM.Web.Service1.customBinding0">
<binaryMessageEncoding />
<httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
</customBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="QaRiM.Web.Service1">
<endpoint address="" binding="customBinding" bindingConfiguration="QaRiM.Web.Service1.customBinding0"
contract="QaRiM.Web.Service1" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
und die servicereferences.clientconfig:
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="CustomBinding_Service1">
<binaryMessageEncoding />
<httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://localhost:36533/Service1.svc" binding="customBinding"
bindingConfiguration="CustomBinding_Service1" contract="ServiceReference1.Service1"
name="CustomBinding_Service1" />
</client>
</system.serviceModel>
</configuration>
Beide wurden erzeugt, indem die VS.
- Können Sie nach dem verbindlichen Elemente der client-und service-config-Dateien? Auch der Endpunkt für den service als gut, da sollte es die Referenz verbindlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie einfach nur fehlt die Konfiguration für das maximale string-Länge des Inhalts.
Fügen Sie diese zu Ihrer verbindlichen Parametern (client und server)
Sorry, ich wusste nicht, dass dieses child-Elements finden Sie unter der Codierung wird verwendet, wenn eine benutzerdefinierte Bindung, erscheint es
binaryMessageEncoding
in deinem Beispiel. Wenn nicht, versuchen Sie die anderen Codierungen mit der Einstellung.wenn Die maximale string-Länge des Inhalts Quote (8192) wurde überschritten beim Lesen von XML-Daten." ist das ignorieren Ihrer Website.config Einstellungen AUCH nach dem einstellen
Sie können auch lösen das problem in Ihrem code, indem Sie eine Instanz von XmlDictionaryReaderQuotas und Einstellung der MaxStringContentLength bis 2147483647
dann verwenden Sie einfach die Instanz von XmlDictionaryReaderQuotas hier als mycreatedreaderquota
Bearbeiten: Dies erspart einem unvollständigen Entwurf, sorry
Streaming ist wahrscheinlich Ihre beste Wette auf der client-Seite zu verhindern, dass die Blockierung der Natur der gepufferten transferMode. Ich weiß nicht, die Besonderheiten, wie groß die Daten werden konsequent, aber Ihr service-Verhalten, ein wenig schöner auf der client-Seite, wenn Sie ging die route. Eine gute Grundierung auf die Konfiguration nur die client-Seite für das streaming finden Sie hier: http://systemmetaphor.blogspot.com/2009/05/using-wcf-to-transfer-large-data-files.html.
Hoffentlich eine Kombination der oben genannten hilft
Haben Sie versucht, die Einstellung der
maxStringContentLength
in der config für den service? In meiner situation, wenn Sie Sie für den Dienst zugelassen für den Silverlight-client den gewünschten Wert fürmaxStringContentLength
.Einer Hinweis ist, dass, wenn Sie erlauben, mehr strings, aber nicht einstellen, dass die
maxReceivedMessageSize
, als diese die Probleme verursachen können, wie gut. DiemaxReceivedMessageSize
muss gesteuert werden, die auf den Dienst und den client, so wird man nicht Erben die Werte von anderen.