the maximum incoming has for exceeded been wcf size service message max

wcf - maximum - maxreceivedmessagesize



tamaño de mensaje máximo de wcf (3)

Hola chicos, una pregunta de WCF para ustedes aquí:

tengo dos servicios y estoy enviando mensajes bastante gruesos entre ellos (~ 100kb). Aunque el valor mencionado anteriormente es típico del tamaño del mensaje, es posible que fluctúe mucho (tanto en direcciones positivas como negativas).

Por lo tanto, para manejar situaciones en las que tengo que transportar un mensaje expandido, he aumentado todos los atributos de tamaño máximo de mensaje, tamaño máximo de cadena, etc. en el app.config tanto en el cliente como en el servidor (con el punto final pertinente haciendo referencia a la vinculación que indica los tamaños)

El límite que puse excede por completo cualquier tamaño de mensaje posible por razones de seguridad. Sin embargo, cuando la comunicación entre servicios ha demostrado ser confiable en el extremo inferior de la escala de tamaño del mensaje, en el extremo superior no es así: los mensajes no parecen entregarse en absoluto.

lo más extraño es que si el mensaje excediera el tamaño máximo, se lanzaría una excepción (¡he encontrado suficientes de ellos para saber esto!), pero no se lanza nada, todo pasa completamente en silencio. He experimentado con varios tamaños de mensajes y definitivamente solo comienza a suceder a medida que crece el tamaño del mensaje. Puedo probar que el servicio de destino no los está recibiendo porque, una vez recibidos, el servicio hace un registro en un DB, pero con mensajes grandes, no se realiza ningún registro.

como dije, estoy casi seguro de que he aumentado el tamaño de todos los atributos aplicables en la aplicación.config, ¡y estoy completamente desconcertado por este comportamiento!

¿Alguna sugerencia sobre qué podría estar causando tal comportamiento desconcertante? ¡cualquier ayuda sería muy apreciada ya que este es el último obstáculo en mi proyecto! Gracias :-)


Hay problemas ocasionales con WCF que harán que falle "silenciosamente" (es decir, sin excepción), lo que puede ser difícil de depurar. Parece que este podría ser el caso que estás viendo.

En este caso, habilitar las opciones de seguimiento en WCF puede ser extremadamente útil, ya que debería permitirle ver si el mensaje realmente está llegando al servicio y cómo lo está tratando el despachador.


bueno, este problema parece haberse resuelto (de repente, después de nunca haberse quejado antes, WCF comenzó a molestarse por un cierto valor en la aplicación. configuró, cambió eso y ¡pareció funcionar entonces!)

¡pero ahora tengo un problema igualmente extraño! por alguna razón, se niega a aceptar que he configurado metadatos para publicar. mi configuración de app.config (lado del host) es la siguiente:

<services> <service name="DataFeederService.FeederService" behaviorConfiguration="DataFeederService.FeederServiceBehavior"> <host> <baseAddresses> <add baseAddress="http://localhost:8010/Feeder"/> <add baseAddress="net.pipe://localhost/FeederPipe"/> </baseAddresses> </host> <!-- Service Endpoints --> <!-- Unless fully qualified, address is relative to base address supplied above --> <endpoint name="namedPipeEndpoint" address="" bindingConfiguration="IPCWindowsSecurity" binding="netNamedPipeBinding" contract="DataFeederService.IFeederService"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint name="httpEndpoint" address="FeederService" binding="wsHttpBinding" bindingConfiguration="httpBinding" contract="DataFeederService.IWebFeederService"/> <!-- Metadata Endpoints --> <!-- The Metadata Exchange endpoint is used by the service to describe itself to clients. --> <!-- This endpoint does not use a secure binding and should be secured or removed before deployment --> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <bindings> <netNamedPipeBinding> <binding name="IPCWindowsSecurity" maxBufferPoolSize="965536" maxBufferSize="965536" maxReceivedMessageSize="965536"> <readerQuotas maxStringContentLength="965536" /> <security mode="Transport"> <transport protectionLevel="EncryptAndSign" /> </security> </binding> </netNamedPipeBinding> <wsHttpBinding> <binding name="httpBinding" maxBufferPoolSize="965536" maxReceivedMessageSize="965536"> <readerQuotas maxStringContentLength="965536" /> </binding> </wsHttpBinding> </bindings> <behaviors> <serviceBehaviors> <behavior name="DataFeederService.FeederServiceBehavior"> <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> <serviceMetadata httpGetEnabled="True" policyVersion="Policy15"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="True" httpHelpPageEnabled="true" /> </behavior> </serviceBehaviors> </behaviors>

He intentado todo lo posible para averiguar por qué se pretende que los metadatos no se publiquen en la dirección especificada " http: // localhost: 8010 / Feeder / mex ". cualquier ayuda sería muy apreciada.

¡Aclamaciones!


lo siento muchachos, después de más arrastre descubrí el origen del error! una de las clases en el contrato de datos había sido modificada (el atributo [DataContract] había sido eliminado, pero extrañamente [DataMemeber] había quedado en las propiedades relevantes! ¡muy extraño!)

gracias por toda tu ayuda de todos modos, especialmente por haberme llevado hasta este punto, donde finalmente puedo lavarme las manos de este maldito proyecto :-)