¿Cómo aumentar MaxStringContentLength en el lado del servidor para el enlace HTTP binario
-
18-09-2019 - |
Pregunta
Recientemente he convertido algunas Silverlight 3 servicios WCF para utilizar los nuevos enlaces HTTP binarios. Las cadenas largas a menudo son enviados al servidor de deserialización en estos servicios y utilizados previamente para asegurar que los datos se pueden leer correctamente. Sin embargo, con la nueva unión no puedo encontrar el lugar correcto para añadir el elemento:
<customBinding>
<binding name="binaryHttpBinding">
<binaryMessageEncoding maxReadPoolSize="2147483647" maxSessionSize="2147483647" maxWritePoolSize="2147483647"/>
<httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
</binding>
</customBinding>
Esto es un intento:
<customBinding>
<binding name="binaryHttpBinding">
<binaryMessageEncoding maxReadPoolSize="2147483647" maxSessionSize="2147483647" maxWritePoolSize="2147483647"/>
<httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
<textMessageEncoding>
<readerQuotas maxDepth="32" maxStringContentLength="5242880"
maxArrayLength="200000" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</textMessageEncoding>
</binding>
</customBinding>
Esto causó otros problemas - no parecer una buena idea tener una codificación binaria y una textMessageEncoding en el mismo enlace. Así, utilizando únicamente la codificación binaria, ¿cómo puedo aumentar las cuotas de lector para permitir deserialización de grandes cadenas?
Solución
Aquí está la solución que encontré:
<customBinding>
<binding name="binaryHttpBinding">
<binaryMessageEncoding maxReadPoolSize="2147483647" maxSessionSize="2147483647" maxWritePoolSize="2147483647">
<readerQuotas maxDepth="32" maxStringContentLength="5242880"
maxArrayLength="200000" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binaryMessageEncoding>
<httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
</binding>
</customBinding>