80 votes

Le quota maximal de taille de message pour les messages entrants (65536) a été dépassé

J'obtiens cette exception lors de la création d'une portée pour quelques tables, toutes ces tables sont de conception énorme

 <bindings>
    <wsHttpBinding>
        <binding name="wsHttpBinding_ISyncServices" closeTimeout="00:10:00"
            openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
            transactionFlow="false" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
            <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
                maxArrayLength="2147483647" maxBytesPerRead="2147483647"
                maxNameTableCharCount="2147483647" />
            <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
            <security mode="Message">
                <transport clientCredentialType="Windows"
                    proxyCredentialType="None" realm="">
                    <extendedProtectionPolicy policyEnforcement="Never" />
                </transport>
                <message clientCredentialType="Windows"
                    negotiateServiceCredential="true" algorithmSuite="Default" />
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

J'ai fait MaxReceivedMessageSize à 2147483647 mais cela me donne toujours une exception ci-dessous à cette ligne

  client.GetTableDescription(scopeName, syncTable)

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 l'élément de liaison approprié.

113voto

Sebastian Zaklada Points 970

Selon la réponse de cette question

Vous voudrez quelque chose comme ceci :

 <bindings>
     <basicHttpBinding>
         <binding name="basicHttp" allowCookies="true"
 maxReceivedMessageSize="20000000"
 maxBufferSize="20000000"
 maxBufferPoolSize="20000000">
             <readerQuotas maxDepth="32"
 maxArrayLength="200000000"
 maxStringContentLength="200000000"/>
         </binding>
     </basicHttpBinding> </bindings>

Veuillez également lire les commentaires sur la réponse acceptée, ceux-ci contiennent des informations précieuses.

20voto

Softec Points 86

Si vous utilisez CustomBinding, vous devrez plutôt apporter des modifications à l'élément httptransport. Réglez-le comme

  <customBinding>
    <binding ...>
     ...
     <httpsTransport maxReceivedMessageSize="2147483647"/>
    </binding>
 </customBinding>

12voto

RQDQ Points 8896

Vous devez également augmenter maxBufferSize . Notez également que vous devrez peut-être augmenter le paramètre readerQuotas .

12voto

Florian Gerhardt Points 2966

Vous devez effectuer les modifications dans la configuration de liaison (dans le fichier app.config) sur le SERVEUR et le CLIENT, sinon cela ne prendra pas effet.

 <system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding maxReceivedMessageSize="2147483647 " max...=... />
        </basicHttpBinding>
       </bindings>
</system.serviceModel>

12voto

p_champ Points 47

La mise à jour de la configuration n'a pas fonctionné pour moi, mais j'ai pu modifier la liaison par programme :

 private YourAPIClient GetClient()
{
    Uri baseAddress = new Uri(APIURL);

    var binding = new BasicHttpBinding();
    binding.MaxReceivedMessageSize = 20000000;
    binding.MaxBufferSize = 20000000;
    binding.MaxBufferPoolSize = 20000000;
    binding.AllowCookies = true;

    var readerQuotas = new XmlDictionaryReaderQuotas();
    readerQuotas.MaxArrayLength = 20000000;
    readerQuotas.MaxStringContentLength = 20000000;
    readerQuotas.MaxDepth = 32;
    binding.ReaderQuotas = readerQuotas;

    if (baseAddress.Scheme.ToLower() == "https")
        binding.Security.Mode = BasicHttpSecurityMode.Transport;

    var client = new YourAPIClient(binding, new EndpointAddress(baseAddress));
    return client;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X