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.
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.
vous devez également augmenter maxBufferSize . Notez également que vous pourriez avoir besoin d'augmenter le readerQuotas .
si vous utilisez CustomBinding, vous préférerez modifier l'élément httptransport. Mettez-le comme
<customBinding>
<binding ...>
...
<httpsTransport maxReceivedMessageSize="2147483647"/>
</binding>
</customBinding>
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>
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
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;
}
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