WCF - Augmentation ReaderQuotas sur le service REST
-
22-10-2019 - |
Question
J'ai un service WCF REST qui accepte une chaîne JSON
L'un des paramètres est une grande chaîne de nombres
Cela provoque l'erreur suivante - qui est visible par le traçage et l'utilisation SVC Viewer Trace
Il y avait une erreur désérialisation l'objet de type CarConfiguration. Le quota de longueur de contenu de chaîne maximale (8192) a été dépassée lors de la lecture des données XML. Ce quota peut être augmentée en modifiant la propriété MaxStringContentLength sur les XmlDictionaryReaderQuotas objets utilisés lors de la création du lecteur XML.
Maintenant, j'ai lu toutes sortes d'articles indiquant comment remédier à cette
Tous recommandent d'augmenter les différents paramètres de configuration sur le serveur et le client
par exemple. Erreur Sérialisation chaîne dans l'appel WebService
http: // bloggingabout .net / blogs / ramon / archive / 2008/08/20 / WCF et grande messages.aspx
Alors mon fichier config se présente comme suit
<webHttpBinding>
<binding name="webBinding" maxBufferSize="5242880" maxReceivedMessageSize="5242880" >
<readerQuotas maxDepth="5242880" maxStringContentLength="5242880" maxArrayLength="5242880" maxBytesPerRead="5242880" maxNameTableCharCount="5242880"/>
</binding>
</webHttpBinding>
...
...
...
<endpoint
address="/"
binding="webHttpBinding"
bindingConfiguration="webBinding"
Mon problème est que je peux changer cela sur le serveur, mais il n'y a pas de paramètres de configuration de WCF sur le client comme un service REST et je fais juste une demande HTTP à l'aide l'objet WebClient
idées?
La solution
so it turns out you need a fullly qualified url on the endpoint address, not a relative one
Error calling a WCF REST service using JSON. length quota (8192) exceeded
Autres conseils
That error wouldn't be happening on the client, since reader quotas are a WCF-only thing and WebClient/HttpWebRequest don't do deserialization themselves or enforce any other kind of quotas.
So I'd say say that it's likely you're putting the configuration in the wrong place and it's not getting picked up.
Either that or... you're not using one of the WCF DataContract Serializers manually on the client side, are you?