J'ai un service WCF qui renvoie 1000 enregistrements de la base de données au client. J'ai un client ASP.NET WCF (j'ai ajouté une référence de service dans le projet d'application Web asp.net pour consommer WCF).
J'obtiens le message suivant lorsque j'exécute l'application cliente:
Le quota de taille de message maximum pour les messages entrants (65536) a été dépassé. Pour augmenter le quota, utilisez la propriété MaxReceivedMessageSize sur l'élément de liaison approprié.
De l'aide? Comment augmenter le quota de taille des messages?
Réponses:
Vous voudrez quelque chose comme ça pour augmenter les quotas de taille de message, dans le fichier App.config ou Web.config :
Et utilisez le nom de liaison dans votre configuration de point de terminaison, par exemple
La justification des valeurs est simple, elles sont suffisamment grandes pour accueillir la plupart des messages. Vous pouvez régler ce nombre en fonction de vos besoins. La faible valeur par défaut est essentiellement là pour empêcher les attaques de type DOS. Le faire 20000000 permettrait à une attaque DOS distribuée d'être efficace, la taille par défaut de 64k nécessiterait un très grand nombre de clients pour maîtriser la plupart des serveurs de nos jours.
la source
Si vous obtenez toujours ce message d'erreur lors de l'utilisation du client de test WCF, c'est parce que le client a un paramètre MaxBufferSize distinct .
Pour corriger le problème:
Une liste de paramètres modifiables apparaîtra, y compris MaxBufferSize.
Remarque: les clients proxy générés automatiquement définissent également MaxBufferSize sur 65536 par défaut.
la source
Si vous créez dynamiquement vos liaisons WCF, voici le code à utiliser:
la source
Le client de test WCF a sa propre configuration client.
Exécutez le client de test et faites défiler vers le bas. Si vous double-cliquez sur le nœud Fichier de configuration, vous verrez la représentation XML. Comme vous pouvez le voir
maxReceivedMessageSize
est65536
.Pour modifier cela, cliquez avec le bouton droit sur le nœud de l'arborescence du fichier de configuration et sélectionnez Modifier avec
SvcConfigEditor
. Lorsque l'éditeur s'ouvre, développez Liaisons et double-cliquez sur la liaison qui a été générée automatiquement.Vous pouvez modifier toutes les propriétés ici, y compris
maxReceivedMessageSize
. Lorsque vous avez terminé, cliquez sur Fichier - Enregistrer .Enfin, lorsque vous êtes de retour dans la fenêtre Client de test WCF, cliquez sur Outils - Options .
REMARQUE : décochez la configuration Toujours régénérer lors du lancement des services .
la source
Always regenerate config
option.J'ai trouvé le moyen facile
la source
Je résous le problème ... comme suit
la source
J'ai résolu mon problème sur Bing Maps WPF sur mon projet Utilisation de CalculateRoute (). Dans mon cas, la solution consistait à définir maxReceivedMessageSize et maxReceivedMessageSize sur l'attribut "httpTransport" pour la section "customBinding".
J'ai défini dans le fichier applications.config (es. MyApp.config) cette configuration:
la source
la source
Pour HTTP:
Pour TCP:
IMPORTANT:
Si vous essayez de passer un objet complexe qui a de nombreux objets connectés (par exemple: une structure de données arborescente, une liste qui a de nombreux objets ...), la communication échouera, quelle que soit la façon dont vous avez augmenté les quotas. Dans de tels cas, vous devez augmenter le nombre d'objets contenant:
la source
maxItemsInObjectGraph
est la solution (rapide) pour moi. Mais lorsque vous augmentez cela, vous devez vous demander si la meilleure solution consiste pour votre application à demander des données par blocs, par opposition à un énorme graphique d'objet qui peut épuiser les ressources.Pour moi, tout ce que j'avais à faire était d'ajouter
maxReceivedMessageSize="2147483647"
au client app.config. Le serveur est resté intact.la source
Une autre chose importante à considérer de mon expérience ..
Je conseillerais fortement de NE PAS maximiser maxBufferPoolSize, car les tampons du pool ne sont jamais libérés tant que le domaine d'application (c'est-à-dire le pool d'applications) ne recycle pas.
Une période de trafic élevé peut entraîner l'utilisation et la libération de beaucoup de mémoire.
Plus de détails ici:
la source
N'oubliez pas que le fichier app.config du point d'entrée d'exécution sera pris en compte, pas le projet de bibliothèque de classe gérant les appels de service Web s'il y en a un.
Par exemple, si vous obtenez l'erreur lors de l'exécution du test unitaire, vous devez configurer la configuration appropriée dans le projet de test.
la source
j'ai cette erreur lors de l'utilisation de ces paramètres sur web.config
j'ai défini des paramètres comme celui-ci:
la source
bindings
élément de Nate et l'a republié dans le cadre de sa réponse. Ces2000000
valeurs sont assez distinctes.