2010-02-25 3 views
6

Je reçois l'exception de communication suivante pour mon service wcf faisant appel à un autre service wcf: "Le quota maximal de taille de message pour les messages entrants (65536) a été dépassé. Pour augmenter le quota, utilisez la propriété MaxReceivedMessageSize sur le élément de liaison. "La limite maximale de la propriété de configuration MaxReceivedMessageSize dans wcf affecte-t-elle les performances du service?

Je résolus en augmentant la taille comme ci-dessous: maxReceivedMessageSize = « 50000000 »

Mais, ici, je veux savoir si des effets secondaires de plus en plus la taille des messages à ce grand niveau.

Répondre

5

Oui, c'est possible. La raison pour laquelle WCF maintient cette limite basse (64 Ko) par défaut est la suivante: imaginez que votre serveur est occupé à répondre à des demandes, disons des dizaines ou des centaines, et que tous requièrent la taille maximale des messages. Potentiellement, votre serveur pourrait devoir allouer des douzaines ou des centaines de tampons de messages en même temps - si vous avez 100 utilisateurs et que chacun demande 64 Ko, c'est 6,4 Mo - mais si vous avez 200 utilisateurs et que chacun demande 5 Mo - c'est un gigaoctet de RAM dans le serveur - juste pour les tampons de message, pour un service. Alors oui - mettre une limite à la taille maximale des messages est logique et permet de gérer la consommation de mémoire de votre serveur (et donc ses performances). Si vous l'ouvrez trop loin, un attaquant risque de faire une telle attaque - inondant votre serveur de requêtes bidon, chacun allouant autant de mémoire que possible, amenant finalement votre serveur (les attaques de Déni de Service comme celles-ci sont assez fréquentes) .

+0

Donc, ce n'est pas seulement pour la réponse bu si nous définissons cela dans le fichier de configuration côté serveur/service, cela signifie pour recevoir la requête. Est-ce que je comprends bien? Pouvons-nous restreindre la réponse côté serveur? ce que je veux dire, c'est que mon service génère 2 Mo de réponse max. mais l'exception se produit et je veux éviter d'envoyer des réponses plus grandes. Est-ce que j'ai un réglage pour cela du côté du service? – batmaci

0

Vous devez augmenter le quota en fonction du service Web. Un effet secondaire que je peux penser si vous utilisez des valeurs très grandes est que l'utilisation de la mémoire va augmenter, mais vous pouvez sans risque l'augmenter à une valeur appropriée sans effets néfastes.

Questions connexes