Wo wird maxStringContentLength erhöht, damit WCF große Zeichenfolgen übergibt?

9

Okay, also habe ich einen netten kleinen WCF-Service eingerichtet und getestet. Der Client erstellt eine Zeichenfolge und übergibt sie an eine Methode für den Dienst. Der Dienst speichert sie dann als Datei. Funktioniert perfekt mit kleinen Mengen von Testdaten, aber wenn ich es mit dem, was es tun soll, versuche, einige serialisierte .net-Objekte zu übergeben, fällt es mit dem Fehler

um
  

Der Formatierer hat währenddessen eine Ausnahme ausgelöst   versuchen, die Nachricht zu deserialisieren:   Fehler beim Deserialisieren des Anfragekörpers   Nachricht für maximale Operation Zeichenfolge   Das Inhaltslängenkontingent (8192) wurde beim Lesen von XML-Daten überschritten. Dieses Kontingent kann erhöht werden, indem die MaxStringContentLength-Eigenschaft für das XmlDictionaryReaderQuotas-Objekt geändert wird, das beim Erstellen des XML-Readers verwendet wird.

Also goggle ich das und finde, dass die MaxStringContentLength-Eigenschaft auf ein "readerQuotas" -Tag innerhalb des Tags der Konfigurationsdatei gesetzt werden sollte, wie folgt:

%Vor%

Also ändere ich es. Ich ändere es in der App.config-Datei meines Clients. Ich ändere es in der Datei App.config und der Datei Web.config meines Servers. Ich ändere es in der App.config-Datei meines Unit-Test-Projekts. Und nichts davon funktioniert - ich bekomme immer den gleichen Fehler.

Interessant und frustrierend, als ich WcfClient.exe angestartet habe, um meinen Dienst anzuschauen, ihn zu verbinden und einen Blick auf die Konfigurationsdatei (Client.dll.config) zu werfen, wurde ich verblüfft, dass diese automatische generierte Datei enthielt keine meiner Änderungen und wurde auf:

zurückgesetzt %Vor%

Ich habe keine Ahnung, woher diese Werte kommen - nirgendwo in meiner gesamten Lösung werden diese gesetzt. Es muss also Standardwerte verwenden, aber ich verstehe nicht, warum Standardwerte verwendet werden, wenn ich benutzerdefinierte Konfigurationsdateien sowohl auf dem Server als auch auf dem Client bereitgestellt habe.

Kann mir jemand helfen, das zu entwirren?

    
Matt Thrower 18.02.2011, 16:19
quelle

2 Antworten

4

1) Ist es möglich, dass Ihr Endpunkt die benutzerdefinierte Bindung nicht ordnungsgemäß referenziert? Könnten Sie Ihre Bindungs- und Endpunkt-Abschnitte veröffentlichen?

2) WcfTestClient verwendet nicht Ihre Service- oder Client-Konfigurationen, um eine eigene Konfiguration festzulegen. Sie müssen die Datei "Client.dll.config" manuell mit "SvcConfigEditor" bearbeiten, um die Bindungsdaten des WcfTestClient-Clients vor der Ausführung des Service einzurichten.

Sie können Ihre WcfTestClient-Konfigurationsänderungen beibehalten, wenn Sie sich die Tools ansehen - & gt; Optionsmenü Weitere Informationen zu WcfTestClient finden Sie in Ссылка

    
Robert Scheibler 18.02.2011, 16:43
quelle
0

Sie müssen auch die maxReceiveMessageSize usw. auf der Bindung selbst so erhöhen ...

Bindung name="BasicHttpsBinding_IService1" maxReceivedMessageSize="34000000" maxBufferPoolSize="34000000" maxBufferSize="34000000"

    
Robert F Tross 24.05.2017 18:38
quelle

Tags und Links