Debugging Sharepoint timer jobs

2019-03-19 22:45发布

问题:

I am creating my first Timer Job and want to debug it. I have installed the timer job through a feature, and added it to a webapplication's JobDefinitions collection, and added a SPMinuteSchedule to run every 5 minutes (for testing purposes).

Then, in Visual Studio I've tried attaching the debugger to the WebApplication's Process, the Central Admin process and the OWSTIMER.exe process, but it will not debug into the Execute Method of the TimerJob. What am I missing here.

P.S. The timer job status says succeeded, so it is running. Weird...

回答1:

When I'm debugging TimerJobs I insert a Assertion at the very first begin of the Execute method, which will always fail. This results in a pop up every time the Execute method is called so you can be sure that the TimerJob was started and have enough time to attach the debugger. Of course you have to remove the Assertion before you go live.

System.Diagnostics.Trace.Assert(false);

One more important thing is that you restart the Timer Service after you deployed a new DLL. Otherwise the Timer Service will run the TimerJob from the old DLL.



回答2:

Debugger.Launch()



回答3:

Most common reasons:

  1. Did you do a debug build?
  2. Did you place the .pdb file in the same folder as the assembly? (A simple search should explain how - eg. Debugging Timer Jobs)
  3. Also read Debugging Custom Timer Jobs on MSDN for some tips.
  4. Perform the 3 R's: Re-build & Re-deploy assembly & Reset the Timer Service before trying to attach again.