the maximum maxbuffersize incoming has for exceeded been c# .net wcf web-config quota

c# - maximum - maxreceivedmessagesize



Se ha superado la cuota de longitud máxima del contenido de la cadena(8192) al leer datos XML ”Error al enviar la cadena XML a WCF (6)

Estoy trabajando con una aplicación .NET, C # que pretende enviar una cadena XML larga a un método de servicio WCF para una operación posterior. Cuando mi aplicación intenta enviar la cadena XML al servicio WCF en tiempo de ejecución, aparece un mensaje de error:

"The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:strProdUserDataXML. The InnerException message was ''There was an error deserializing the object of type System.String. The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 131, position 57.''. Please see InnerException for more details."

En el lado de la aplicación web.config, escribí el "enlace" y el "punto final" como:

<binding name="EndPointHTTPGenericPortal" closeTimeout="01:00:00" openTimeout="01:00:00" receiveTimeout="01:00:00" sendTimeout="01:00:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> <security mode="None"> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> <endpoint address="http://192.168.140.40/WcfGenericPortal_Service/Service1.svc" binding="basicHttpBinding" bindingConfiguration="EndPointHTTPGenericPortal" contract="IService1" name="EndPointHTTPGenericPortal" behaviorConfiguration="Graph" />

Si algún organismo puede ayudarme a resolver este error, estaré muy agradecido. Gracias a todos por adelantado.


Aquí hay un artículo en MSDN sobre las cuotas de los lectores .

Parece que se está superando una de las cuotas de lector en su servidor.

Específicamente, se está excediendo maxStringContentLength . El valor predeterminado es 8192 caracteres para maxStringContentLength que se está excediendo como se describe en el mensaje de error.

Pero puede que no sea el mejor enfoque para aumentar todos los valores al máximo 2147483647 como han sugerido otros.

Como está escrito en la documentación de MSDN que vinculé:

Las restricciones de complejidad brindan protección contra los ataques de denegación de servicio (DOS) que intentan utilizar la complejidad del mensaje para comprometer los recursos de procesamiento de puntos finales. Otras restricciones de complejidad incluyen elementos tales como una profundidad máxima del elemento y una longitud máxima para el contenido de la cadena dentro del mensaje.

Además del hecho de que actualmente tiene el Modo de seguridad configurado en Ninguno , puede que se esté preparando para algunos problemas.


Compruebe que su Marco de destino para el cliente es el mismo que el del servicio. Tuve este problema e intenté todas las correcciones anteriores pero no funcionó. Revisé las propiedades y revisé el Marco de destino y lo cambié.


Encuadernación lateral del cliente

<system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IService11" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text"> <readerQuotas maxDepth="128" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <security mode="None"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> </basicHttpBinding> </bindings> <behaviors> <endpointBehaviors> <behavior name="KAMServiceDistributor"> <dataContractSerializer maxItemsInObjectGraph="2147483647" /> </behavior> </endpointBehaviors> </behaviors> <client> <endpoint address="http://localhost:1234/xxxx/Service.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService11" contract="yourservice namespae" name="AnyName" /> </client> </system.serviceModel>

Archivo de configuración de servicio:

<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="ServiceBehaviour"> <serviceDebug includeExceptionDetailInFaults="false" /> <serviceMetadata httpGetEnabled="true" /> <dataContractSerializer ignoreExtensionDataObject="false" maxItemsInObjectGraph="2147483646" /> </behavior> </serviceBehaviors> </behaviors> <bindings> <basicHttpBinding> <binding <b>maxReceivedMessageSize="2147483647"</b>> <readerQuotas maxDepth="128" maxStringContentLength="2147483647" /> </binding> </basicHttpBinding> </bindings> <services> <service behaviorConfiguration="ServiceBehaviour" name="Service"> <endpoint binding="basicHttpBinding" contract="IService" /> </service> </services> </system.serviceModel>


Pinaki Karuri,

Las longitudes de las cuotas no solo dependen de la configuración del cliente, sino también de la del servidor. Por favor, publique el archivo web.config de su servidor WCF para que podamos aclarar el problema. Es probable que ya tengas la cuota establecida para 8192 , por lo que la forma más rápida para encontrar y aumentar su valor.

Actualizar

Por lo que puedo ver, le falta el nodo ''readerQuotas'' de web.config de su servidor, por lo que MaxStringContentLength tiene su valor configurado de forma predeterminada ( 8192 ). Consulte este enlace para obtener más información: http://msdn.microsoft.com/en-us/library/system.xml.xmldictionaryreaderquotas.maxstringcontentlength.aspx


Recibí este error y lo solucioné agregando esta propiedad MaxItemsInObjectGraph para el servicio tanto en la configuración del cliente como del servidor.

<dataContractSerializer maxItemsInObjectGraph="2147483647" />

lado del servidor

<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="Service.Service1Behavior"> <dataContractSerializer maxItemsInObjectGraph="2147483647" /> </behavior> </system.serviceModel>

Lado del cliente

<behaviors > <endpointBehaviors> <behavior name="endpointbehaviour"> <dataContractSerializer maxItemsInObjectGraph="2147483646"/> </behavior> </endpointBehaviors> </behaviors>

y no olvide aplicar este comportamiento a EndPoint behaviorConfiguration = "endpointbehaviour"