tamaño supera para necesario máximo mensajes maxbuffersize los excedido entrantes cuota contenido búfer almacenar wcf string long-integer quota

wcf - supera - La cuota máxima de longitud de contenido de cadena(8192) se ha excedido al leer datos XML



se ha excedido la cuota de tamaño máximo de los mensajes entrantes wcf (2)

Estoy tratando de pasar una cadena grande (24,000 a 50,000 caracteres) a un servicio TCP WCF alojado en uno mismo.

Subí el maxStringContentLength (en todas partes) al 22008192.

Leí en alguna parte que necesito cambiar la configuración de enlace a "LargeBuffer" o "LongFields", pero cuando hago esto:

<endpoint address="" binding="netTcpBinding" bindingConfiguration="LongFields" contract="ExStreamWCF.IService1">

o esto:

<endpoint address="" binding="netTcpBinding" bindingConfiguration="LargeBuffer" contract="ExStreamWCF.IService1">

Mi servicio no comenzará. Realmente necesito este error para irme. ¿Algunas ideas?

Gracias,

Jason

PS: archivo de configuración del servicio tcp en el servidor:

<system.serviceModel> <services> <service behaviorConfiguration="ExStreamWCF.Service1Behavior" name="ExStreamWCF.Service1"> <endpoint address="" binding="netTcpBinding" bindingConfiguration="" contract="ExStreamWCF.IService1"> <identity> <dns value="Devexstream-2.anchorgeneral.local" /> <!--<dns value="vmwin2k3sta-tn2" />--> </identity> </endpoint> <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="net.tcp://Devexstream-2:8080/Service" /> <!--<add baseAddress="net.tcp://vmwin2k3sta-tn2:8080/Service" />--> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior name="ExStreamWCF.Service1Behavior"> <serviceMetadata httpGetEnabled="false" /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> </serviceBehaviors> </behaviors>

EDITAR: Enlaces según lo solicitado

<system.serviceModel> <bindings> <netTcpBinding> <binding name="NetTcpBinding_IService1" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288" maxBufferSize="2565536" maxConnections="10" maxReceivedMessageSize="2565536"> <readerQuotas maxDepth="22008192" maxStringContentLength="22008192" maxArrayLength="2516384" maxBytesPerRead="22008192" maxNameTableCharCount="22008192" /> <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> <security mode="Transport"> <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" /> <message clientCredentialType="Windows" /> </security> </binding> </netTcpBinding> </bindings>

Puntos finales del cliente:

<client> <endpoint address="net.tcp://devexstream-2:8080/Service" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IService1" contract="TCPService.IService1" name="NetTcpBinding_IService1"> <identity> <servicePrincipalName value="TCPService/Devexstream-2" /> <dns value="Devexstream-2.anchorgeneral.local" /> </identity> </endpoint>

He editado el servicio (como se muestra a continuación), pero ahora el servicio no se iniciará. La nueva aplicación.config:

<system.serviceModel> <bindings> <netTcpBinding> <binding name="ExStreamWCFBinding" closeTimeout="00:00:05" openTimeout="00:00:05" receiveTimeout="00:00:05" sendTimeout="00:00:05" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparison="StrongWildCard" maxBufferPoolSize="524288" maxBufferSize="524288" maxConnections="10" maxReceivedMessageSize="5242880"> <readerQuotas maxDepth="32" maxStringContentLength="5242880" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> </binding> </netTcpBinding> </bindings> <services> <service behaviorConfiguration="ExStreamWCF.Service1Behavior" name="ExStreamWCF.Service1"> <endpoint address="" binding="netTcpBinding" bindingConfiguration="ExStreamWCFBinding" contract="ExStreamWCF.IService1"> <identity> <dns value="Devexstream-2.anchorgeneral.local" /> <!--<dns value="vmwin2k3sta-tn2" />--> </identity> </endpoint> <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="net.tcp://Devexstream-2:8080/Service" /> <!--<add baseAddress="net.tcp://vmwin2k3sta-tn2:8080/Service" />--> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior name="ExStreamWCF.Service1Behavior"> <serviceMetadata httpGetEnabled="false" /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> </serviceBehaviors> </behaviors>


A veces, cambiar el valor de "maxStringContentLength" al máximo puede no ser de ayuda.entonces agregue el enlace "predeterminado" a continuación dentro de la sección "basicHttpBinding" en el archivo de configuración del servidor.

<binding > <readerQuotas maxDepth="32" maxStringContentLength="102400" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> </binding>


La configuración de enlace debe tener el nombre que asigne al elemento netTcpinding - "LargeBuffer" o "LongFields" no significarán nada a menos que exista un elemento de enlace en el archivo de configuración con ese nombre. Es por eso que su servicio no se iniciará cuando lo ingrese; es muy probable que tenga un mensaje de error de configuración de algún tipo, apuesto.

Para anular la configuración predeterminada 8192 para maxStringContentLength, haga lo siguiente:

  1. Cree un elemento de enlace en el archivo de configuración que tenga el tamaño que desee para maxStringContentLength y asígnele un nombre en el atributo de nombre.
  2. En el elemento de punto final, asigne el nombre del paso 1 anterior al atributo bindingConfiguration.

Si no especifica una configuración de enlace para el punto final, el servicio utilizará los valores predeterminados.

Por ejemplo, tome su archivo de configuración arriba. Debajo de la etiqueta, agregue la siguiente configuración de enlace (tenga en cuenta que sus valores específicos y los atributos opcionales que use variarán según las necesidades de su servicio):

<bindings> <netTcpBinding> <binding name="ExStreamWCFBinding" closeTimeout="00:00:05" openTimeout="00:00:05" receiveTimeout="00:00:05" sendTimeout="00:00:05" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparison="StrongWildCard" maxBufferPoolSize="524288" maxBufferSize="524288" maxConnections="10" maxReceivedMessageSize="5242880"> <readerQuotas maxDepth="32" maxStringContentLength="5242880" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> </binding> </netTcpBinding> </bindings>

Luego, cuando defines el punto final:

<endpoint address="" binding="netTcpBinding" bindingConfiguration="ExStreamWCFBinding" contract="ExStreamWCF.IService1">

EDITADO PARA AGREGAR

Apunte su información adicional, asignando al atributo bindingConfiguration el valor "NetTcpBinding_IService1" en el punto final de su servicio.