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

j'obtiens cette exception tout en créant la portée pour quelques tables toutes ces tables sont énormes dans la conception

<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 il me donne encore en dessous de l'exception à 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 le élément de liaison.

59
demandé sur Filnor 2011-03-28 17:30:21

7 réponses

selon réponse à cette question

Vous voulez 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>

s'il vous plaît aussi lire les commentaires à la réponse acceptée là-bas, ceux-ci contiennent des commentaires précieux.

93
répondu Sebastian Zaklada 2018-04-13 09:46:32

vous devez également augmenter maxBufferSize . Notez également que vous pourriez avoir besoin d'augmenter le readerQuotas .

12
répondu RQDQ 2011-03-28 13:32:43

si vous utilisez CustomBinding, vous préférerez modifier l'élément httptransport. Mettez-le comme

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

6
répondu Softec 2015-08-22 09:53:12

Vous devez faire les changements dans la configuration de liaison (dans l'application.config file) sur le serveur et le CLIENT, ou il ne prendra pas effet.

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding maxReceivedMessageSize="2147483647 " max...=... />
        </basicHttpBinding>
       </bindings>
</system.serviceModel>
6
répondu flayn 2017-09-20 07:57:25

cela a fonctionné pour moi:

 Dim binding As New WebHttpBinding(WebHttpSecurityMode.Transport)
 binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None
 binding.MaxBufferSize = Integer.MaxValue
 binding.MaxReceivedMessageSize = Integer.MaxValue
 binding.MaxBufferPoolSize = Integer.MaxValue
4
répondu Denis 2015-04-10 17:27:20

modifier la configuration ne m'a pas aidé. Suivant bien travaillé tho

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;
    }
2
répondu p_champ 2017-09-10 08:54:31

ma solution a été d'utiliser le paramètre"- OutBuffer 2147483647 " dans ma requête, qui fait partie des paramètres communs. PS C: > Get-Help about_CommonParameters-Full

0
répondu user3499962 2015-08-19 18:32:24