2011-08-02 59 views
9

Error en la deserialización del cuerpo del mensaje de respuesta para la operación 'CreateTransactionEntity'. La cuota máxima de longitud de contenido de cadena (8192) se ha excedido al leer datos XML. Esta cuota se puede aumentar cambiando la propiedad MaxStringContentLength en el objeto XmlDictionaryReaderQuotas utilizado al crear el lector XML.La cuota máxima de longitud de contenido de cadena (8192)

Hey, me siguen dando este error a pesar de que tengo un nodo readerQuota más grande que la vida en mi archivo web.config ...

<system.serviceModel> 
<bindings> 
    <netTcpBinding> 
    <binding name="BindingTcp" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" closeTimeout="00:10:00"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" 
        maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
    </binding> 
    </netTcpBinding> 

Después de navegar por internet sobre el tema, parece que no puede dar una respuesta decente. Si tiene algún consejo, realmente lo agradecería.

+0

Es que el archivo web.config de su servidor? Porque el mensaje de error parece provenir del cliente (es un error que deserializa la respuesta). ¿Cuál es tu código de cliente? –

+0

¿Está seguro de que su servicio/cliente está utilizando la configuración? ¿Puede publicar tanto el seguimiento de la pila de errores como el archivo de configuración * completo * (con la definición también)? – carlosfigueira

+0

Es posible que deba verificar las configuraciones de sus clientes. – Jack

Respuesta

15

Para garantizar que los valores que especifique para el enlace se recogen, debe asignar el Nombre del enlace del elemento <binding> al atributo bindingConfiguration del elemento <endpoint>. Si no lo hace, WCF usará los valores predeterminados para el enlace especificado.

<system.serviceModel> 
    <bindings> 
    <netTcpBinding> 
     <binding name="BindingTcp" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" closeTimeout="00:10:00"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     </binding> 
    </netTcpBinding> 

En el ejemplo anterior, se han asignado "BindingTCP" como el nombre de su elemento <binding>. Así que en su punto final hacer esto:

<endpoint address="net.tcp://some.website.url/yourserivce" binding="netTcpBinding" bindingConfiguration="BindingTCP" contract="IYourContract" /> 

Dependiendo de donde el error es (en el cliente o en el servidor) determinará qué archivo de configuración tiene que ser modificado. Si el error ocurre en ambos extremos, modifique ambos archivos de configuración.

1

Debe verificar su aplicación cliente para saber si usa la configuración de enlace predeterminada. La manera más rápida de confirmar esto es capturar trazas de WCF en un nivel detallado y verificar eventos de la actividad Construir ChannelFactory.

HTH, Amit Bhatia

+0

Estas son todas buenas respuestas. Lo que realmente sucedió es que de hecho no estaba poniendo el nombre del enlace en mi elemento de punto final, y estaba agregando el servicio a mi proyecto a través de la herramienta de refrencia de servicio. Creo que establece algunos atributos a los valores predeterminados. Cambié esos valores y todo parece funcionar. – SoftwareSavant

Cuestiones relacionadas