2009-10-06 11 views
5

Tengo un verdadero limón en mis manos. Espero que alguien que tenga el mismo problema o sepa cómo solucionarlo pueda orientarme en la dirección correcta.WCF Catastrophic Failure

La instalación de

Estoy tratando de crear un servicio de datos WCF que utiliza un modelo ADO Marco de la entidad para recuperar datos de la base de datos. He agregado la referencia del servicio WCF y todo parece estar bien. Tengo dos conjuntos de llamadas al servicio de datos. El primero recupera una lista de todos los "usuarios" y devoluciones (esta lista no incluye ningún dato dependiente (por ejemplo, dirección, contacto, etc.). La segunda llamada es cuando se selecciona un "usuario", la solicitud de la solicitud incluye una información más dependiente pocos, como dirección, datos de contacto, mensajes, etc. dado un identificador de usuario. Esto también parece funcionar bien.

El limón

Después de un cambio de selección del usuario, es decir. pidiendo más datos dependientes del servicio de datos, la aplicación deja de responder.

Crash error:

The request channel timed out while waiting for a reply after 00:00:59.9989999. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.

me reinicia el proceso de depuración, pero la aplicación no hará que cualquier servicio de llamadas de datos hasta después de aproximadamente un minuto más o menos, VS 08 muestra un cuadro de mensaje con el error:

Unable to process request from service. ' http://localhost:61768/ConsoleService.svc '. Catastrophic failure.

He buscado en Google el infierno fuera de este error y problemas relacionados pero no encontró nada de uso.

Soluciones Posibles

he encontrado algunas pistas en cuanto a la fuente del problema. En la aplicación del cliente.config:

  1. maxReceivedMessageSize> Ajuste a un valor más alto, p. Ej. 5242880.
  2. receiveTimeout> Establezca un valor más alto, p. Ej. 00:30:00

He intentado esto pero todo fue en vano. Sospecho que hay un problema subyacente que no se puede solucionar simplemente cambiando algunos números. Cualquier pista sería muy apreciada.

Respuesta

6

Lo he resuelto = P.

Causa servicio

El WCF funciona bien. Fueron las llamadas al servicio de datos las culpables. Cada vez que hacía la llamada, creaba una nueva referencia al servicio de datos, pero nunca cerraba/descartaba la referencia del servicio. Entonces, después de un par de llamadas, el servicio de datos alcanza su máxima conexión y se detiene.

Solución

Asegúrese de cerrar/disponer de cualquier referencia de servicio de datos correctamente. La mejor práctica sería encerrar en una declaración de uso.

using(var dataService = new ServiceNS.ServiceClient()) 
{ 
    // Use service here   
} 
// The service will be disposed and connection freed. 
+0

¿El patrón singleton con el cliente como la propiedad y el uso de referencia de servicio asíncrono crea los problemas ??? –