我正在创建我的第一个Timer Job并想要调试它。我已通过一个功能安装了计时器作业,并将其添加到webapplication的JobDefinitions集合中,并添加了一个SPMinuteSchedule,每5分钟运行一次(用于测试目的)。
然后,在Visual Studio中,我尝试将调试器附加到WebApplication的Process,Central Admin进程和OWSTIMER.exe进程,但它不会调试到TimerJob的Execute方法。我在这里错过了什么。
P.S。计时器作业状态显示成功,因此它正在运行。奇怪的...
答案 0 :(得分:9)
当我调试TimerJobs时,我在Execute方法的第一次开始时插入一个Assertion,它总是会失败。每次调用Execute方法时都会弹出一次,这样您就可以确定TimerJob已经启动并且有足够的时间来连接调试器。当然,你必须在上线之前删除断言。
System.Diagnostics.Trace.Assert(false);
更重要的是,在部署新DLL后重新启动Timer Service。否则,定时服务将从旧DLL运行TimerJob。
答案 1 :(得分:4)
答案 2 :(得分:2)
最常见的原因: