Come aumentare MaxStringContentLength sul lato server per il legame Http binario
-
18-09-2019 - |
Domanda
Recentemente ho convertito alcuni Silverlight 3 servizi WCF per utilizzare le nuove associazioni http binari. stringhe lunghe sono spesso inviati verso il server per deserializzazione in questi servizi e io in precedenza utilizzati per garantire i dati possono essere letti correttamente. Tuttavia, con la nuova associazione non riesco a trovare il posto giusto per aggiungere l'elemento:
<customBinding>
<binding name="binaryHttpBinding">
<binaryMessageEncoding maxReadPoolSize="2147483647" maxSessionSize="2147483647" maxWritePoolSize="2147483647"/>
<httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
</binding>
</customBinding>
Ecco un tentativo:
<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>
che ha causato altri problemi - non sembrare una buona idea avere una codifica binaria e un textMessageEncoding nella stessa vincolante. Quindi, utilizzando solo la codifica binaria, come posso aumentare le quote del lettore per consentire la deserializzazione di stringhe di grandi dimensioni?
Soluzione
Ecco la soluzione che ho trovato:
<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>