Ich habe gerade die Anzahl der Methoden in meinem ServiceContract erhöht. wenn ich den Service Referenz in Visual Studio aktualisieren erhalte ich die Meldung:Die Höchstzahl der Zeichenzählung für Namenszeichen (16384) wurde überschritten
Metadaten eine Referenz enthält, die nicht aufgelöst werden kann: 'net.tcp: //xxxxx.com: 8002/DataQueryService/mex'.
Im XML-Dokument ist ein Fehler aufgetreten.
Das maximale Namenszeichen count quota (16384) wurde beim Lesen von XML-Daten überschritten. Die Nametable ist eine Datenstruktur, die zum Speichern von Strings verwendet wird, die während XML-Verarbeitung angetroffen werden - lange XML-Dokumente mit sich nicht wiederholenden Elementnamen, Attributnamen und Attributwerte können dieses Kontingent auslösen. Dieses -Kontingent kann erhöht werden, indem die MaxNameTableCharCount-Eigenschaft für das XmlDictionaryReaderQuotas-Objekt geändert wird, das beim Erstellen des XML-Lesers verwendet wird.
Der ursprüngliche Server-Seite Config war:
<services>
<service behaviorConfiguration="XXXXX.DataQueryService.ServiceBehavior" name="XXXXX.DataQueryService.QueryService">
<host>
<baseAddresses>
<add baseAddress="net.tcp://xxxxx.com:8002/DataQueryService" />
</baseAddresses>
</host>
<endpoint name="MexEndpoint" address="mex" binding="customBinding" bindingConfiguration="unsecureTcpMex" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<customBinding>
<binding name="unsecureTcpMex">
<tcpTransport portSharingEnabled="True" />
</binding>
</customBinding>
</bindings>
, die ich geändert:
<bindings>
<customBinding>
<binding name="unsecureTcpMex">
<textMessageEncoding>
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<tcpTransport portSharingEnabled="True" maxReceivedMessageSize="2147483647" />
</binding>
</customBinding>
</bindings>
Welche anderen Änderungen muss ich an meine Config machen diese Arbeit zu bekommen?
Update Nach @ Chris Ratschlag habe ich versucht, die Konfigurationsdatei für SVCUtil zu aktualisieren. Ich habe meinem Endpunkt einen Namen hinzugefügt, damit er übereinstimmt (oben aktualisiert). Die SvcUtil.config ist nun wie folgt:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="unsecureTcpMex">
<textMessageEncoding>
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint binding="customBinding" bindingConfiguration="unsecureTcpMex"
contract="IMetadataExchange"
name="MexEndpoint" />
</client>
</system.serviceModel>
</configuration>
Vielleicht Ihre Nachrichten sind einfach zu groß oder zu viele XML-Elemente/Attribute zusammengesetzt? –
Es ist die Anzahl der Betriebsverträge, die zugenommen hat. Dies verursacht das Problem. – openshac
Mit welcher Version von WCF arbeiten Sie (beide Seiten)? – ranieuwe