9
votes

WCF - Le quota de comptage de caractères numériques maximum (16384) a été dépassé lors de la lecture de données XML.

Je dispose d'un service WCF qui utilise WSHTTPTTPLINDING. La configuration du serveur est la suivante:

<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>


0 commentaires

4 Réponses :


12
votes

Essayez ce qui suit:

Dans le répertoire d'installation de votre Visual Studio où se trouve Devenv.exe (par exemple, C: \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ Ide) Ajouter cette section au devenv.exe. Cofig p> xxx pré>

dans l'app.config de votre service WCF ajoutez la même liaison: p> xxx pré>

p>

Notez que l'attribut NAME des balises de liaison à partir des deux fichiers doit correspondre à forte> (par exemple, largeservicebinding) p>

ajoutez enfin le point de terminaison MEX suivant dans votre étiquette de service: P >

 <services>
  <service behaviorConfiguration="MyServiceBehavior"
    name="MyService.MyService">
    <endpoint address="" binding="wsHttpBinding" contract="MyService.IMyService">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="customBinding" contract="IMetadataExchange" bindingName="testBinding" bindingConfiguration="largeServiceBinding" name="http"/>
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8731/Design_Time_Addresses/MyService/MyService/" />
      </baseAddresses>
    </host>
  </service>
</services>


3 commentaires

Merci pour la réponse tentera de vous faire connaître le résultat.


Cela a fonctionné merci. Je devais changer dans le client les paramètres des points d'extrémité de service après avoir fonctionné. Merci!!!!


Cela a également fonctionné pour moi, mais il n'était pas nécessaire d'ajouter une nouvelle liaison, je viens de mettre à jour le Readerquotas avec ce qui précède.



1
votes

Une chose à reconnaître est que le message fait référence aux quotas de lecteur de SvCuttille et non au service! SvCuttille a une limite sur la quantité de métadonnées qu'il peut lire. Cette limite peut être modifiée avec un fichier de configuration. La solution consiste à créer un fichier de configuration pour SvCutil et placez-le dans le même dossier que l'outil. La prochaine fois que vous exécutez SVCuttil, les valeurs de fichier de configuration seront prises en compte.

http://geekswithblogs.net/claquoscura/archive/2007 /08/20/20/114806.aspx


0 commentaires

1
votes

dans votre app.config ou dll.config sur le client ajoutez: XXX

Et vous y allez! C'est l'une des choses vraiment gênantes avec WCF et aussi souvent que Google vous rapporte beaucoup de BS. Des tonnes de temps gaspillées avec ceci.


0 commentaires

5
votes

Je sais que cela a été un moment, mais j'ai eu le même problème et j'ai trouvé une autre solution (plus simple) dans codeProject

dans la solution donnée là que les valeurs sont définies dans le code plutôt que le fichier .config. xxx

Cependant, j'ai changé les valeurs des valeurs correspondantes dans le fichier .config (dans les deux et le < ReaderQuotas> sections) et a résolu le problème (plutôt que d'ajouter des fixations personnalisées): xxx

J'espère que cela aidera quelqu'un :)


0 commentaires