8

我正在创建我的第一个计时器作业并想对其进行调试。我已经通过一项功能安装了计时器作业,并将其添加到 Web 应用程序的 JobDefinitions 集合中,并添加了一个 SPMinuteSchedule 以每 5 分钟运行一次(用于测试目的)。

然后,在 Visual Studio 中,我尝试将调试器附加到 WebApplication 的进程、中央管理进程和 OWSTIMER.exe 进程,但它不会调试到 TimerJob 的执行方法。我在这里想念什么。

PS 计时器作业状态显示成功,所以它正在运行。奇怪的...

4

3 回答 3

9

当我调试 TimerJobs 时,我在 Execute 方法的第一个开头插入了一个断言,这总是会失败。这会导致每次调用 Execute 方法时都会弹出一个窗口,因此您可以确定 TimerJob 已启动并且有足够的时间附加调试器。当然,您必须在上线之前删除断言。

System.Diagnostics.Trace.Assert(false);

更重要的一件事是在部署新的 DLL 后重新启动 Timer Service。否则,计时器服务将从旧 DLL 运行 TimerJob。

于 2009-06-12T09:17:22.657 回答
4

调试器.Launch()

于 2009-06-14T12:38:26.790 回答
2

最常见的原因:

  1. 您是否进行了调试构建?
  2. 您是否将 .pdb 文件放在与程序集相同的文件夹中?(一个简单的搜索应该解释如何 - 例如调试计时器作业
  3. 另请阅读MSDN 上的Debugging Custom Timer Jobs以获取一些提示。
  4. 执行 3 R:重新构建和重新部署程序集并重置计时器服务,然后再尝试再次附加。
于 2009-06-12T08:55:45.003 回答