superó máxima matriz los longitud leer datos cuota contenido cadena wcf basichttpbinding

wcf - matriz - Se ha excedido la cuota máxima de tamaño de mensaje para los mensajes entrantes(65536)



se superó la cuota de longitud del contenido de cadena 8192 al leer los datos xml (7)

Debe realizar los cambios en la configuración de enlace (en el archivo app.config) en el SERVIDOR y el CLIENTE, o no tendrá efecto.

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

Obtengo esta excepción al crear el alcance para pocas tablas, todas esas tablas son enormes en diseño

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

He hecho que MaxReceivedMessageSize 2147483647 pero aún así me está dando una excepción en esta línea

client.GetTableDescription(scopeName, syncTable)

Se ha excedido la cuota máxima de tamaño de mensaje para los mensajes entrantes (65536).
Para aumentar la cuota, use la propiedad MaxReceivedMessageSize en el elemento de enlace apropiado.


Esto funcionó para mí:

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


Hacer cambios en la configuración no me ayudó. Siguiendo funcionó bien aunque

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; }


Mi solución fue utilizar el parámetro "-OutBuffer 2147483647" en mi consulta, que es parte de los parámetros comunes. PS C:> Get-Help about_CommonParameters -Full


Según la respuesta de esta pregunta

Querrás algo como esto:

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

Por favor, también lea los comentarios a la respuesta aceptada allí, esos contienen valiosos comentarios.


Si usa CustomBinding, preferiría realizar cambios en el elemento httptransport. Establecerlo como

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