2010-12-18 8 views
6

Hay un servicio WCF con un subproceso asincrónico de larga ejecución. Esta operación de larga ejecución puede ejecutarse más de 1 día. Estamos organizando servicio WCF en IIS 6.Subproceso asincrónico de larga ejecución en WCF

El hilo está funcionando bien, pero en 20 minutos que están recibiendo el mensaje de error:
"El hilo ha sido abortado"

El hilo está muerto como una resultado.

configuración

Nuestro Servicio WCF:
[ServiceBehavior (InstanceContextMode = InstanceContextMode.Single)]
[ServiceBehavior (ConcurrencyMode = ConcurrencyMode.Single)]

Puede sugerir el origen de este problema?

Gracias por su respuesta.

Respuesta

9

Si no hay actividad (no hay solicitudes) en este servicio web, IIS puede decidir descargar el dominio de la aplicación, lo que, por supuesto, provocará la muerte de todos los hilos. El valor predeterminado es 20 minutos y se podría configurar en las propiedades del grupo de aplicaciones en IIS. También hay otros factores que pueden causar el reciclado del grupo de aplicaciones, como el sistema que se ejecuta con poca memoria. Así que alojar tal cosa en IIS podría no ser confiable. Puede considerar alojar tareas de larga ejecución en Servicios de Windows.

+0

@Artur, compruebe la configuración del grupo de aplicaciones, aunque le recomiendo encarecidamente que utilice los Servicios de Windows para dichas tareas. –

+2

Gracias. Creo que deberíamos alojarlo en el Servicio de Windows. –

7

IIS6 tiene una configuración que cerrará el grupo de aplicaciones después de un tiempo predefinido sin solicitudes, el valor predeterminado es de 20 minutos. Parece que eso es con lo que te estás metiendo. Puede encontrar esta configuración en Propiedades del conjunto de aplicaciones => Pestaña Rendimiento => Eliminar marca de verificación en "Apagar procesos de trabajo después de estar inactivo para".

En general, se considera una mala idea alojar tareas de larga ejecución bajo IIS, ya que hay muchas cosas que pueden abortar el hilo o cerrar el proceso por completo. Application Pool recycles es el más destacado.

+0

Gracias @driis por tu comentario. –

2

Puede tener un servicio de Windows host un punto final WCF que inicia su tarea de larga ejecución. Los Servicios de Windows están diseñados para funcionar durante mucho, mucho tiempo y son ideales para esta situación.

Cuestiones relacionadas