Se produce un tiempo de espera al enviar un objeto comercial a través de la callback de WCF

Tengo un servicio WCF implementado con un contrato de callback al que estoy tratando de enviar un objeto comercial. Tengo el objeto de negocio decorado con los atributos DataContract () y DataMember (), y contiene el siguiente número de propiedades:

  • ints: 3
  • cuerdas: 4
  • XElemento: 1
  • otros objetos: 5 (también decorados con DataContract () y DataMember ()

Cada vez que bash enviar este objeto a través de la callback, el servicio expira. He intentado crear otros objetos con menos propiedades para enviar a través de la callback, y puedo hacer que pasen si solo hay una propiedad, pero si tengo más de una propiedad, el servicio se agota.

¿Hay algo mal en mi configuración? He probado el wsDualHttpBinding predeterminado, así como un customBinding (como se muestra a continuación) y he probado todo tipo de configuraciones diferentes con maxBufferSize, maxBufferPoolSize y maxReceivedMessageSize. No quiero boost el tiempo de espera, ya que me gustaría que este objeto llegara a mi cliente con bastante rapidez. ¡Por favor, que alguien me ayude … si me quedara algo de pelo, ya lo habría sacado!

He configurado mi servicio como tal:

Configuración del servidor:

                            

Configuración del cliente:

                       

Agregue lo siguiente a su web.config:

              

Luego invoca tu método de servicio web. Esto generará WcfDetailTrace.svclog en la raíz de su sitio web. Abra este archivo con SvcTraceViewer.exe . Esto debería darte bastante información sobre lo que está pasando.

¿Qué tan grandes son los otros objetos? Por ejemplo, ¿qué tan grande es el subárbol de XElement ? El gráfico para un objeto puede llegar a ser bastante grande eventualmente, en particular si llama a otros objetos.

Un enfoque de investigación simple podría ser eliminar los atributos de [DataMember] excepto quizás una de las cadenas, y volver a introducirlos uno a uno hasta que se rompa.