readerQuotas vs limite de requête dans WCF web.config

Je souhaite transférer 100 Mo de données d’une application cliente à un service WCF. J’ai défini readerQuotas dans mon fichier Web.config, mais j’ai lu un article dans lequel ils suggéraient des limites de requête, expliquées brièvement dans http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits maxAllowedContentLength.

J’aimerais savoir quelles sont les différences, s’il vous plaît.

lecteurQuotas

         

requestLimits

      

requestLimits est un paramètre de niveau de serveur Web. Lorsque requête est fournie avec ContentLength (ou longueur d’URL) qui dépasse la limite que vous avez définie ici – la requête est immédiatement rejetée avec l’erreur 404, elle ne sera même pas mise en pipeline WCF. Donc, ce paramètre de configuration n’a aucun lien avec WCF. Notez que cela limite la longueur totale de la demande, peu importe ce qui est à l’intérieur de la demande.

readerQuotas est un paramètre de niveau WCF. Il impose diverses ressortingctions sur la taille des messages SOAP pouvant être traités par le sharepoint terminaison WCF. Notez qu’il s’agit maintenant du message SOAP (so, xml) et non de la longueur totale de la demande. Ces parameters étaient essentiellement nécessaires pour empêcher divers types d’attaques par déni de service visant votre service à l’aide de messages xml préparés de manière spéciale.

maxArrayLength – La taille maximale du lecteur xml de tableau peut être renvoyée lors de la lecture du message. Cela inclut les tableaux d’octets. WCF arrêtera de lire le message et rejettera la demande s’il lit un tableau plus grand que cela. Si vous attachez des fichiers à vos demandes WCF en utilisant quelque chose comme les propriétés d’ byte[] de votre classe de contact de données, il s’agit du paramètre qui limitera la taille de ce fichier (mais il est préférable de ne pas attacher de fichiers de cette façon).

maxDepth – imbrication maximale d’éléments XML dans un message.

maxNameTableCharCount – le lecteur stockera certaines informations (telles que les espaces de noms et les préfixes d’espace de noms) en mémoire lors de la lecture du message. Cela limite la taille d’une telle table en mémoire.

maxSsortingngContentLength – longueur maximale d’une chaîne dans un message SOAP. Supposons que vous ayez une classe DataContract avec une propriété de chaîne DataMember. Si, pendant la désérialisation, il se produit que cette chaîne dépasse la limite, le message serait rejeté.

maxBytesPerRead – fondamentalement la longueur maximale de tout élément xml (y compris tous ses enfants).