2009-07-16 5 views
7

Je reçois l'erreur suivante de mon service WCF qui renvoie les résultats d'une requête dans les objets C#.WCF - Le quota maximal de taille de message pour les messages entrants a été dépassé

Le quota de taille maximale des messages pour les messages entrants (131072) a été dépassé

Je sais comment résoudre ce via MaxReceivedMessageSize Ce que je cherche à savoir comment puis-je trouver ce qui contribue à la taille du message. Il ne me semble pas que cela puisse être purement des données, par ex. Si j'ajoute 5 Ko de données à la quantité de données que je retire de mon service. J'ai besoin d'augmenter MaxReceivedMessageSize de plus de 5 Ko pour résoudre l'erreur.

Je m'interroge également sur tous les outils pour examiner la taille des messages dans le débogueur. Lorsque je passe par mon code au point où mon service WCF est appelé, je ne peux pas sembler obtenir des informations sur la taille du message, etc

Et enfin comment couper/optimiser la taille du message!

+0

La configuration requise pour définir le MaxReceivedMessageSize est ici: http://stackoverflow.com/questions/1573606/wcf-maxreceivedmessagesize-question –

Répondre

0

Vous pouvez utiliser le sérialiseur de contrat de données pour sérialiser le message dans un flux mémoire, puis vérifier le nombre d'octets qui le composent.

+0

un bon échantillon? De toute façon, à mon humble avis, respectueusement, sonne comme ** WOMBAT ** lorsque la solution est définie le quota MaxReceivedMessageSize. Peut-être des fins de débogage. – Kiquenet

10

Pouvez-vous activer la journalisation? Si vous incluez ces extraits dans votre configuration de service:

<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing" > 
     <listeners> 
     <add name="xmlTrace" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData="c:\Traces\ServiceTrace.svclog" /> 
     </listeners> 
    </source> 
    </sources> 
    <trace autoflush="true" /> 
</system.diagnostics> 

<system.serviceModel> 
    <diagnostics> 
    <messageLogging 
     logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="false" 
     logMalformedMessages="true" logEntireMessage="true" 
     maxSizeOfMessageToLog="65535000" maxMessagesToLog="500" /> 
    </diagnostics> 
</system.serviceModel> 

Cela va créer un fichier ServiceTrace.svclog dans le répertoire que vous avez choisi. Utilisez le WCF Service Trace Viewer (trouvé dans votre répertoire c:\program files\Microsoft SDKs\Windows\v6.0A\bin\) pour analyser le fichier - il vous montrera le contenu exact des messages, et inclura également la "longueur du contenu" pour le message, de sorte que vous verrez exactement quelle est la taille le message est.

+6

Où puis-je trouver l'information de "longueur du contenu", j'ai le Microsoft Service Trace Viewer ouvert et ne le vois pas ... – manu08

+0

je ne peux pas voir la longueur du contenu soit dans la visionneuse de trace de service – stackoverflowuser

+0

Note: le spectateur est "SvcTraceViewer.exe" –

Questions connexes