Problem mit großen Anforderungen in WCF
Ich habe gesehen, dass dieses problem geschrieben, eine million mal, aber keine der Lösungen hat bei mir...Also hier gehe ich:
Beim Aufruf eines WCF-Diensts, bekomme ich die folgende Fehlermeldung:
Das Formatierungsprogramm Ausnahmefehler beim Versuch, die Deserialisieren
Meldung: Es wurde ein Fehler beim Deserialisieren von parameter
http://BlanketImportService.ServiceContracts/2011/06:request. Die
InnerException-Nachricht war " Es wurde ein Fehler beim Deserialisieren der
Objekt vom Typ BlanketImport.BlanketImportRequest. Die maximale array
Länge Quote (16384) überschritten wurde beim Lesen von XML-Daten. Diese
Quote kann erhöht werden, durch ändern der MaxArrayLength-Eigenschaft auf den
XmlDictionaryReaderQuotas Objekt beim erstellen des XML-Lesers.
Zeile 1, position 44440.'. Bitte sehen InnerException für mehr details.
Habe ich geändert, die readerQuotas
auf sowohl auf dem client als server, UND wandte die bindingConfiguration tag.
Hier ist die server config:
<bindings>
<basicHttpBinding>
<binding name="BilagImportBinding" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="BlanketImport">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BilagImportBinding" bindingNamespace="http://BlanketImportService.ServiceContracts/2011/06" contract="BlanketImport.IBlanketImport">
</endpoint>
</service>
</services>
Und die client-config:
<bindings>
<basicHttpBinding>
<binding name="BilagImportBinding" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost/BlanketImport/BlanketService.svc"
binding="basicHttpBinding" bindingConfiguration="BilagImportBinding" contract="BlanketServiceReference.IBlanketService"
name="BasicHttpBinding_IBlanketService" />
</client>
- Ist der service-name nur "BlanketImport", oder ist es unter einem namespace (wie BlanketImport.BlanketImport)? Der Wert des "name" - Attribut des
<service>
element muss der fully-qualified-name des service (namespace + - Typ-name), sonst WCF nicht finden. - Es ist 2015 und der wcf-Konfiguration die Einstellungen weiterhin ein Rätsel für die meisten von uns.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung gefunden...Aber immer noch sehr seltsam!
Wenn ich die Namen entfernen Attribut aus meine Bindung zum tag und die bindingConfiguration Attribut von my endpoint-tag funktioniert es. Dies bedeutet, dass das "basicHttpBinding" - Konfiguration ist die Standardkonfiguration für alle "basicHttpBinding" Endpunkte
Ich hatte das gleiche problem, während Sie versuchen, das hochladen von Dateien über WCF mit einem namens-Bindung-Konfiguration. Dies hat zu tun mit den Veränderungen in WCF 4.0 und "Vereinfachte" Konfiguration (siehe MSDN)
FYI: ich habe alles versucht, um dieses problem zu lösen; die parameter der service war ein byte-array, so dass wir es entfernt und verwendet einen Strom, der versucht, die änderung gepuffert versus streaming-Modus und natürlich die 1,5 Millionen config-Optionen zu ändern-Größen, die nie abgeholt mit einem namens config.
Sehr seltsam, aber die Arbeit mit Ihrem Vorschlag.
Ich hatte ein ähnliches Problem, wo die namens-Bindung war nicht verwendet, indem der Endpunkt. Mein problem war ein Tippfehler in dem Namen des Dienstes. Wie Livewire sagte, WCF 4 Vereinfachte Konfiguration erstellt automatisch einen Endpunkt und meine angegebenen Endpunkt war nicht zu überschreiben.