2010-07-13 18 views
2

J'ai activé la compression de mon service WCF en implémentant l'exemple GZip encoder présenté sur MSDN et tout fonctionne très bien, mais maintenant je dois transférer mes quotas de lecteurs à cette liaison, comme je l'ai précédemment avait ces personnalisés lorsque j'utilisais wsHttpBinding.Activation de readerQuotas sur la liaison personnalisée WCF GZip Encoder

Ceci est mon GZip contraignant tel que déclaré dans mon Web.config du service WCF:

<customBinding> 
    <binding name="BufferedHttpCompressionBinding" closeTimeout="00:00:15" 
     openTimeout="00:00:15" receiveTimeout="00:00:15" sendTimeout="00:00:15"> 
     <gzipMessageEncoding innerMessageEncoding="textMessageEncoding"> 
     </gzipMessageEncoding> 
     <httpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
     maxBufferSize="2147483647"> 
     <extendedProtectionPolicy policyEnforcement="Never" /> 
     </httpTransport> 
    </binding> 
    </customBinding> 

Comme vous pouvez le voir sans les quotas de lecture, voici maintenant les readerQuotas que je voudrais ajouter:

<readerQuotas 
       maxDepth="64" 
       maxStringContentLength="1048576" 
       maxArrayLength="1048576" 
       maxBytesPerRead="1048576" 
       maxNameTableCharCount="1048576" /> 

J'ai essayé d'insérer ce noeud comme un enfant de l'élément <binding />, et aussi j'ai vu un exemple en ligne de celui-ci entre l'élément <gzipMessageEncoding />, aucun des deux travaux pour moi de renvoyer une erreur:

System.Configuration.ConfigurationErrorsException: Unrecognized element 'readerQuotas'. 

Des pensées? Est-il possible d'utiliser des quotas de lecteurs avec des liaisons personnalisées? J'imagine que cela devrait être le cas, mais est-ce que cela pourrait être un changement de classe ou un moyen simple de passer à la configuration? Espérons que certains WCF whiz peuvent aider :)

Merci beaucoup, Graham.

+0

pourrait essayer d'utiliser la éditeur de configuration de service - pas sûr si elle prend en charge les liaisons personnalisées ou non, mais vaut la peine :) –

+0

Merci, nous avons jeté un oeil ici, il semble qu'il ne répertorie que les champs de liaison très bas, pas de champs pour les quotas de lecteurs peut être réglé :( – GONeale

+0

avez-vous déjà compris? Je soupçonne qu'avec le temps écoulé, vous avez trouvé quelque chose. quelle était la solution? – Beta033

Répondre

0

j'ai pu le faire par programme:

var gzipBindingElement = new GZipMessageEncodingBindingElement(); 
myBinding.ReaderQuotas.CopyTo((TextMessageEncodingBindingElement)gzipBindingElement.InnerMessageEncodingBindingElement).ReaderQuotas);