0

我有一个小问题。我正在尝试按照本教程添加一个计时器作业:http: //dotnetfinder.wordpress.com/2010/07/24/creatingcustomsharepointtimerjob2010/

我到了启用计时器作业并且每五分钟启动一次的地步。问题是它没有执行所有的 Execute 方法。

    public override void Execute(Guid contentDbId)
    {

        // get a reference to the current site collection's content database

        SPWebApplication webApplication = this.Parent as SPWebApplication;

        SPContentDatabase contentDb = webApplication.ContentDatabases[contentDbId];

        // get a reference to the "ListTimerJob" list in the RootWeb of the first site collection in the content database

        SPList Listjob = contentDb.Sites[0].RootWeb.Lists["Liens"];

        // create a new list Item, set the Title to the current day/time, and update the item

        SPListItem newList = Listjob.Items.Add();

        //newList["URL"] = "http://"+DateTime.Now.ToString()+".fr";

        //newList.Update();

    }

我将调试器附加到 OWSTIMER.EXE。如果我尝试在以下行添加断点:SPList ListJob = ...,没关系,但是如果我尝试在下一行添加新断点(SPListItem newList = ...),那么我会收到以下消息:“无法设置以下断点:... CLR 无法设置断点”。

有谁知道我怎样才能让它工作?

4

2 回答 2

7

您似乎正在附加到正确的服务。请参阅如何:调试计时器作业以仔细检查您的步骤。

此外,正如此评论中所指出的,您应该在部署计时器作业时重新启动计时器服务:

标记

2011 年 2 月 11 日凌晨 4:41

任何计时器项目都需要完成一个非常重要的步骤。您必须在部署之间回收 SharPoint 计时器服务。最好的方法是添加

net stop SPTimerV4 – 预构建

net start SPTimerV4 – 构建后

到您的共享点项目。如果您不执行上述操作 - 您会疑惑为什么您的代码似乎不是最新的。原因是计时器服务将程序集与您的类一起缓存。这可能会花费您数小时的故障排除时间,以尝试确定您的代码未部署的原因。

于 2012-04-25T13:52:10.713 回答
1

确保您的项目配置处于调试模式(在发布模式下编译器设置为启用优化代码)。参考这篇博文

于 2012-04-25T13:33:14.987 回答