“La durée maximale de la chaîne de la longueur du contenu de quota (8192) a été dépassé lors de la lecture de données XML” erreur lors de l'envoi de chaîne XML pour WCF
Je travaille avec un .NET, C# une application qui a l'intention d'envoyer une longue chaîne XML pour un Service WCF méthode pour la poursuite de l'opération. Quand mon application essaie d'envoyer la chaîne XML de Service WCF dans l'exécution, j'obtiens un message d'erreur :
"The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:strProdUserDataXML. The InnerException message was 'There was an error deserializing the object of type System.String. The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 131, position 57.'. Please see InnerException for more details."
Mon côté application web.config j'ai écrit la "liaison" & "endpoint" comme:
<binding name="EndPointHTTPGenericPortal" closeTimeout="01:00:00" openTimeout="01:00:00" receiveTimeout="01:00:00" sendTimeout="01:00:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
<endpoint address="http://192.168.140.40/WcfGenericPortal_Service/Service1.svc" binding="basicHttpBinding" bindingConfiguration="EndPointHTTPGenericPortal" contract="IService1" name="EndPointHTTPGenericPortal" behaviorConfiguration="Graph" />
Si tout corps peut m'aider sur la façon de résoudre cette erreur, je vais être très bien tenu.
Merci à tous par avance.
- Et qu'est-ce que de votre côté serveur web de config?
- Quelle est la valeur maximale de la chaîne de la longueur du contenu de quota sur le serveur?
- Voici une Q&A stackoverflow.com/questions/6917061/...
- Salut Voo & Jocke, merci pour votre réponse. côté serveur config est: "<binding name="EndPointHTTPGenericPortal" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" openTimeout="00:30:00" closeTimeout="00:30:00" sendTimeout="00:30:00" receiveTimeout="00:10:00"> <mode de sécurité="None"/> </liaison>'
- où est votre "readerQuotas" nœud?
- Beaucoup ici sont juste aller avec la force brute de la solution qui consiste à définir l'ensemble de la config des valeurs au maximum de 2 GO (2 147 483 647 octets), mais attention, cela peut vous rendre vulnérable à des attaques par déni de service, etc. Il va travailler, mais il ya une raison pourquoi les valeurs par défaut sont définies de manière faible en comparaison.
- En ce qui concerne mon commentaire précédent - désolé, certains sont de caractère, tableau de valeurs de longueur, et le nœud de valeur de profondeur - pas seulement les valeurs d'octets dans le lecteur de quota paramètres de configuration.
- J'ai le même problème. sauf que dans mon cas, cela se produira que sur 1 des 4 dev ordinateur Dell, le fabricant de l'ordinateur qui sont les même modèles. nous avons tous utiliser les mêmes visual studio et 1 seul gars, il se bloque lorsque nous courons tous à la même solution que j'ai faite. c'est sur le SVN, donc même code. tous les CPU.
- veuillez cocher la accepté de répondre à
- double possible de le maximum de La chaîne de la longueur du contenu de quota (8192) a été dépassé lors de la lecture de données XML
Vous devez vous connecter pour publier un commentaire.
Voici un article sur MSDN sur Lecteur De Quotas.
Il apparaît que l'un des lecteur de quotas sur votre côté serveur est en train d'être dépassé.
Plus précisément, maxStringContentLength est en train d'être dépassé. La valeur par défaut est 8192 caractères pour maxStringContentLength qui est décrit par le message d'erreur est en train d'être dépassé.
Mais il peut ne pas être la meilleure approche de la juste remonter toutes les valeurs au maximum 2147483647 comme certains l'ont suggéré.
Comme écrit dans la documentation MSDN, que j'ai relié:
Couplé avec le fait que vous avez actuellement Mode de Sécurité ensemble de Aucun - vous peut-être vous-même la mise en place de certains problèmes.
J'ai eu cette erreur et de résoudre par l'ajout de cette - MaxItemsInObjectGraph propriété pour le service à la fois le client et le serveur de configuration .
côté serveur
Côté Client
et n'oubliez pas d'appliquer ce comportement à l'Extrémité paramètre behaviorconfiguration="endpointbehaviour"
Côté Client Liaison
Fichier De Configuration Du Service:
Pinaki Karuri,
quotas longueurs dépendent non seulement de la configuration du client - ils dépendent aussi de du serveur un. Merci de poster votre WCF du serveur web.config afin que nous puissions jeter quelque lumière sur le problème. Il y a une probabilité que vous avez déjà le quota de là pour 8192, de sorte que le moyen le plus rapide pour vous serait de trouver et d'augmenter sa valeur.
Mise à jour
Aussi loin que je peux voir, vous êtes absent "readerQuotas" nœud de votre serveur web.config, donc MaxStringContentLength a sa valeur par défaut (8192). Veuillez consulter ce lien pour plus d'informations: http://msdn.microsoft.com/en-us/library/system.xml.xmldictionaryreaderquotas.maxstringcontentlength.aspx
Essayer de mettre la suite des choses dans les liaisons.
Il a résolu mon problème. Pour plus de référence, trouver lien suivant http://blogfornet.com/2013/08/the-maximum-string-content-length-quota-8192-has-been-exceeded-while-reading-xml-data/
Vérifier que votre Cible Cadre pour le client est la même que celle du service. J'ai eu ce problème et a essayé tous les ci-dessus résout mais cela ne fonctionne pas. Vérifié les propriétés et vérifié le Framework Cible et l'a changé.