WCF - Die maximale nametable-Zeichen zählen-Quote (16384) überschritten wurde beim Lesen von XML-Daten
Ich habe einen WCF-Dienst verwendet wsHttpBinding. Die server-Konfiguration ist wie folgt :
<bindings>
<wsHttpBinding>
<binding name="wsHttpBinding" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
Auf der client-Seite ich bin auch der Service-Referenz des WCF-Service. Es funktioniert Super, wenn ich die eingeschränkten Funktionen sagen, dass 90 Bedienung Vertrag in meinen IService aber wenn Sie hinzufügen eine mehr als OperationContract ich bin nicht in der Lage ein Update der Service Referenz noch ich in der Lage bin, hinzufügen, dass der service-Referenz. In diese Artikel ist es erwähnt, dass durch ändern von config-Dateien(ich.e devenv.exe.config, WcfTestClient.exe.config und SvcUtil.exe.config) funktioniert es aber auch solchen Bindungen in diesen config-Dateien noch, die Fehlermeldung erscheint nämlich
Es wurde ein Fehler beim herunterladen von 'http://10.0.3.112/MyService/Service1.svc/mex'.
Die Anforderung ist fehlgeschlagen mit HTTP-status 400: Bad Request.
Metadaten enthalten einen Verweis, der nicht aufgelöst werden: 'http://10.0.3.112/MyService/Service1.svc/mex'.
Es ist ein Fehler in XML Dokument (1, 89549).
Die maximale nametable-Zeichen zählen-Quote (16384) überschritten wurde beim Lesen von XML-Daten. Die nametable ist eine Datenstruktur zum speichern von strings aufgetreten, während die XML-Verarbeitung - lange XML-Dokumente mit nicht-wiederholenden element-Namen, Attribut-Namen und Attribut-Werte auslösen können, diese Quote. Diese Quote kann erhöht werden, durch ändern der MaxNameTableCharCount Eigenschaft auf die XmlDictionaryReaderQuotas Objekt beim erstellen des XML-Lesers. Zeile 1, position 89549.
Wenn der Dienst definiert ist, die in der aktuellen Lösung, versuchen Sie die Erstellung der Lösung und hinzufügen der service Referenz wieder.
Irgendeine Idee, wie man dieses Problem lösen????
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie Folgendes:
In das Installationsverzeichnis Ihrer installation von Visual Studio, wo devenv.exe befindet sich (z.B. C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE), fügen Sie diesen Abschnitt, um die devenv.exe.cofig
in der app.config des WCF-Dienst hinzufügen, die gleiche Bindung:
Beachten Sie, dass das name-Attribut des binding-tags aus den beiden Dateien übereinstimmen muss (z.B. largeServiceBinding)
Schließlich fügen Sie die folgenden mex-Endpunkt in Ihre service-tag-Nummer:
diese könnte wie folgt Aussehen:
readerQuotas
mit den oben genannten.Ich weiß, es ist schon eine Weile her, aber ich hab das gleiche problem und fand andere (einfachere) Lösung in codeproject
In die Lösung gegeben, da die Werte im code festgelegt werden eher die Ausnahme .config-Datei.
Jedoch, änderte ich die Werte in die entsprechenden Werte in der .config-Datei ( in der
<binding>
und die<readerQuotas>
Abschnitte) und das problem gelöst ist (anstatt das hinzufügen von benutzerdefinierten Bindungen):Ich hoffe das hilft jemandem 🙂
Einer Sache zu erkennen ist, dass die Meldung bezieht sich auf das svcutil-reader Quoten nicht den service lieben! Svcutil hat ein limit, wie viel Metadaten kann es Lesen. Dieser Grenzwert kann geändert werden, mit einer config-Datei. Die Lösung ist das erstellen einer config-Datei für svcutil und platzieren Sie es im gleichen Ordner wie das tool. Nächste mal, wenn Sie svcutil, die config-Datei Werte berücksichtigt werden.
http://geekswithblogs.net/claraoscura/archive/2007/08/20/114806.aspx
in Ihrer app.config oder dll.config auf dem client hinzufügen:
Und dort gehen Sie!
Dies ist einer der wirklich nervigen Dinge mit WCF und wie oft google nur ergibt Sie eine Menge von bs. Verschwendet eine Menge Zeit mit diesem.