2011-08-29 41 views
9

Tengo la siguiente configuración para un servicio WCF.Se ha superado la cuota máxima de tamaño de mensaje para los mensajes entrantes (65536)

A pesar de que han aumentado la maxReceivedMessageSize, el servicio aún genera un error:

The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.`" exception.

¿Cómo se puede solucionar?

<system.serviceModel> 
    <services> 
     <service name="MyService" behaviorConfiguration="MyServiceTypeBehaviors"> 
     <endpoint address="http://localhost:22230/MyService.svc" 
       binding="basicHttpBinding" 
       bindingConfiguration="MyServiceBinding" 
       contract="IMyService" /> 

     <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> 
     </service> 
    </services> 

    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MyServiceTypeBehaviors" > 
      <serviceMetadata httpGetEnabled="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

    <bindings> 
     <basicHttpBinding> 
     <binding name="MyServiceBinding" 
       hostNameComparisonMode="StrongWildcard" 
       receiveTimeout="00:10:00" 
       sendTimeout="00:10:00" 
       openTimeout="00:10:00" 
       closeTimeout="00:10:00" 
       maxReceivedMessageSize="6553600" 
       maxBufferSize="6553600" 
       maxBufferPoolSize="524288" 
       transferMode="Buffered" 
       messageEncoding="Text" 
       textEncoding="utf-8" 
       bypassProxyOnLocal="false" 
       useDefaultWebProxy="true" > 
      <security mode="None" /> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    </system.serviceModel 
+0

Mi teoría es que su configuración cliente no está configurado correctamente. – ChaosPandion

+0

por lo que dice, esto es correcto y debería funcionar? Mi cliente es WCFTestClient en este momento. – DarthVader

+0

Hay un puñado de ideas en [este hilo] (http://social.msdn.microsoft.com/forums/en-US/wcf/thread/f1ad96bf-c5a0-4e6f-a357-0957d32cf2e5), algunas de las cuales don No se aplica (por ejemplo, ya has aumentado maxBufferSize también), pero probablemente valga la pena mirar más de cerca. – ewall

Respuesta

15

Si esta es la configuración del servicio, debe buscar en la configuración de su cliente y hacer coincidir el maxReceivedMessageSize con el tamaño del mensaje de los servidores. El mensaje viene de tu cliente.

+0

mi cliente es WCFTestClient en este momento. – DarthVader

+2

Luego debe cambiar la configuración de WCFTestClient (vaya a herramientas y opciones) o envíe menos datos al WCFTestClient. – Peter

+2

para cambiar la configuración de wcf Test Client (FW 4.0 en mi caso) debe hacer clic derecho en la configuración del archivo más bajo en la lista de archivos del árbol de la izquierda. seleccione "Editar con SvcConfigEditor" y luego seleccione Encuadernación. en el elemento de encuadernación adentro encuentra los 3 tipos marcados aquí. se establece en 2 MB como un tamaño razonable. http://i.imgur.com/eBdguoy.png – arik

4

Necesita aumentar el tamaño máximo de mensaje en la configuración de su cliente. El valor predeterminado es 65536, duplicarlo puede ser suficiente para sus necesidades.

Si está configurando sus extremos mediante programación, el siguiente fragmento de código puede ayudar a:

BasicHttpBinding binding = new BasicHttpBinding() { MaxReceivedMessageSize = 131072 }; 

Entonces, cuando una instancia de servicio de su cliente, pasan en este objeto de vinculación al constructor. Por ejemplo:

MyServiceClient client = new MyServiceClient(binding, "http://www.mysite.com/MyService/"); 
0

, asegúrese de copiar el nuevo App.config

Cuestiones relacionadas