Ho appena aumentato il numero di metodi nel mio ServiceContract. quando aggiorno il riferimento al servizio in Visual Studio ottengo il messaggio:È stata superata la quota massima consentita per il numero di caratteri (16384)
Metadati contiene un riferimento che non può essere risolta: 'net.tcp: //xxxxx.com: 8002/DataQueryService/mex'.
C'è un errore nel documento XML.
La quota massima del numero identificabile quota di conteggio (16384) è stata superata durante la lettura dei dati XML. nametable è una struttura di dati utilizzata per memorizzare le stringhe rilevate durante l'elaborazione XML - i documenti XML lunghi con nomi di elementi non ripetuti, i valori degli attributi e i valori degli attributi possono attivare questa quota. Questa quota può essere aumentata modificando la proprietà MaxNameTableCharCount sull'oggetto XmlDictionaryReaderQuotas utilizzato durante la creazione del lettore XML .
La configurazione lato server originale era:
<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>
che ho modificato a:
<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>
Quali altri cambiamenti devo fare al mio config per ottenere questo lavoro?
Aggiornamento Seguendo il consiglio di @ Chris ho provato ad aggiornare il file di configurazione per SVCUtil. Ho aggiunto un nome al mio endpoint in modo che corrispondesse (aggiornato sopra). Lo SvcUtil.config è ora la seguente:
<?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>
Forse i vostri messaggi sono semplicemente troppo grandi o costituiti da troppi elementi XML/attributi? –
È il numero di contratti operativi che è aumentato. Questo sta causando il problema. – openshac
Quale versione di WCF stai lavorando con (entrambi i lati)? – ranieuwe