2009-06-12 16 views
8

Estoy creando mi primer trabajo de temporizador y quiero depurarlo. He instalado el trabajo del temporizador a través de una función y lo he agregado a la colección JobDefinitions de una aplicación web, y he agregado SPMinuteSchedule para que se ejecute cada 5 minutos (con fines de prueba).Depuración de trabajos de temporizador Sharepoint

Luego, en Visual Studio, intenté adjuntar el depurador al proceso de la aplicación web, al proceso de administración central y al proceso OWSTIMER.exe, pero no se depurará en el método de ejecución de TimerJob. Que me estoy perdiendo aqui.

P.S. El estado del trabajo del temporizador dice éxito, por lo que se está ejecutando. Extraño ... razones

Respuesta

9

Cuando estoy depurando TimerJobs inserto una afirmación en el primer inicio del método Execute, que siempre fallará. Esto da como resultado una ventana emergente cada vez que se llama al método Execute para que pueda estar seguro de que se inició el TimerJob y tenga tiempo suficiente para adjuntar el depurador. Por supuesto, debes eliminar la Afirmación antes de activarte.

System.Diagnostics.Trace.Assert(false); 

Una cosa más importante es reiniciar el servicio de temporizador después de implementar una nueva DLL. De lo contrario, el Servicio de temporizador ejecutará TimerJob desde la DLL anterior.

+0

Parece que está funcionando un poco ahora ... Solución CLeaned y temporizador reiniciado, el depurador está funcionando ... – Colin

+0

¡Genial! Depurar TimerJobs también me produjo dolor de cabeza. – Flo

+1

Interesante idea a través de la afirmación ... también si usas Debug.Assert en lugar de Trace.Assert, entonces cualquier compilación de versión que hagas no tendrá ese código (aunque en algún punto de tu compilación de depuración querrías comentarlo de todos modos) – mundeep

2

más frecuentes:

  1. hizo usted una versión de depuración?
  2. ¿Coloca el archivo .pdb en la misma carpeta que el conjunto? (Un simple search debe explicar cómo - por ejemplo, Debugging Timer Jobs)
  3. Lea también Debugging Custom Timer Jobs en MSDN para obtener algunos consejos.
  4. Realice las 3 R's: Reconstruya & Reimplemente el ensamblaje & Restablezca el servicio del temporizador antes de intentar volver a conectarlo.
+0

Agregado el Debug.Assert = false, reiniciar mi máquina, pero no se está cargando OWStimer mi AP (incluso copié en el directorio c: \ windows \ assemly \ carpeta GAC_MSIL \ \ ? ? – Colin

+0

Reconstruyó el proyecto, eliminó el assebly manualmente con el explorador de Windows, luego copió el archivo manualmente también con el explorador, luego copió pdb nuevamente, y la depuración se enganchó en proceso .... – Colin

+0

Disculpas olvidé mencionar la reconstrucción habitual/volver a desplegar/reiniciar el proceso, editará la respuesta :) – mundeep

Cuestiones relacionadas