2010-05-21 15 views
5

Deseo enviar una cadena XML grande a un servicio WCF SVC de Silverlight.Envío de XML grande de Silverlight a WCF

Parece que cualquier cosa por debajo de 50k se envía correctamente pero si intento enviar algo por encima de ese límite, mi solicitud llega al servidor (se invoca BeginRequest) pero nunca llega a mi SVC. Obtengo la clásica excepción "NotFound".

¿Alguna idea sobre cómo aumentar ese límite?

¿Si no puedo subirlo? ¿Cuáles son mis otras opciones?

Aquí está mi configuración de enlace

<bindings> 
     <customBinding> 
      <binding name="customBinding0" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647"> 
       <binaryMessageEncoding> 
     <readerQuotas 
      maxArrayLength="2147483647" 
      maxBytesPerRead="2147483647" 
      maxDepth="2147483647" 
      maxNameTableCharCount="2147483647" 
      maxStringContentLength="2147483647" /> 

     </binaryMessageEncoding> 
       <httpTransport/> 
      </binding> 
      <binding name="customBindingSecure" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647"> 
       <binaryMessageEncoding> 
     <readerQuotas 
      maxArrayLength="2147483647" 
      maxBytesPerRead="2147483647" 
      maxDepth="2147483647" 
      maxNameTableCharCount="2147483647" 
      maxStringContentLength="2147483647" /> 
       </binaryMessageEncoding> 
       <httpsTransport/> 
      </binding> 
     </customBinding> 
    </bindings> 

Edición: Más detalles: Si rompo en el Global.asax endRequest, veo en la respuesta "400 Bad Request"

Edición: Más detalles de nuevo: Activé el Trace y puedo ver el siguiente error: Se ha excedido la cuota máxima de tamaño de mensaje para los mensajes entrantes (65536). Para aumentar la cuota, use la propiedad MaxReceivedMessageSize en el elemento de enlace apropiado.

Sin embargo, mi maxReceivedMessageProperty ya está establecido en 2147483647.

Respuesta

6

Ok tengo trabajo!

Desde que estoy usando un customBinding, la maxReceivedMessageSize tiene que ser establecido en el elemento httpTransport así:

<bindings> 
     <customBinding> 
      <binding name="customBinding0" > 
       <binaryMessageEncoding> 
     <readerQuotas 
      maxArrayLength="2147483647" 
      maxBytesPerRead="2147483647" 
      maxDepth="2147483647" 
      maxNameTableCharCount="2147483647" 
      maxStringContentLength="2147483647" /> 

     </binaryMessageEncoding> 
       <httpTransport maxReceivedMessageSize="4194304" /> 
      </binding> 
      <binding name="customBindingSecure"> 
       <binaryMessageEncoding> 
     <readerQuotas 
      maxArrayLength="2147483647" 
      maxBytesPerRead="2147483647" 
      maxDepth="2147483647" 
      maxNameTableCharCount="2147483647" 
      maxStringContentLength="2147483647" /> 
       </binaryMessageEncoding> 
       <httpsTransport maxReceivedMessageSize="4194304" /> 
      </binding> 
     </customBinding> 
    </bindings> 

Gracias a todos por su ayuda!

0

Prueba esto en el app.config/web.config en el lado del servidor:

<system.web> 
    <httpRuntime maxRequestLength="109200" executionTimeout="3600" /> 
</system.web> 
1

También puede activar el registro de WCF para obtener más información acerca del error original. Esto me ayudó a resolver este problema.

Añadir lo siguiente a su web.config, se guarda el registro en C: \ log \ Traces.svclog

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" 
        switchValue="Information, ActivityTracing" 
        propagateActivity="true"> 
      <listeners> 
       <add name="traceListener" 
        type="System.Diagnostics.XmlWriterTraceListener" 
        initializeData= "c:\log\Traces.svclog" /> 
      </listeners> 
     </source> 
    </sources> 
</system.diagnostics> 
Cuestiones relacionadas