代码之家  ›  专栏  ›  技术社区  ›  Faiz

来自SPWeb的计时器作业

  •  6
  • Faiz  · 技术社区  · 14 年前

    谢谢,

    2 回复  |  直到 12 年前
        1
  •  6
  •   Joel Fillmore    14 年前

    计时器作业作为服务器场管理员运行,不打算由最终用户直接触发。由于某些作业可能是资源密集型作业,因此只有服务器场管理员可以创建新作业或修改现有作业的计划。

    SPWorkItem 对用户任务进行排队的基础结构,这些任务随后由派生自的自定义计时器作业进行处理 SPWorkItemJobDefinition . 您的Web部件将调用 SPSite.AddWorkItem 添加工作项。当计时器作业运行时,它将查找具有匹配WorkItemType GUID的任何工作项并调用 ProcessWorkItem 超载。

        2
  •  3
  •   Stefan    14 年前

    你说得对。要启动计时器作业,应用程序池用户必须是服务器场管理员。因为启动计时器作业需要更新 SPJobDefinition 带有 SPSchedule . 这个 SPjob定义 是一个 SPPersistedObject 存储在SharePoint配置数据库中。只有服务器场管理员才能写入此数据库。

    我看不出有什么办法可以通过这个问题。

    解决方法: 根据您的要求,您可以编写一个定期运行的主作业。此作业可以查询SharePoint列表并启动由此类列表项定义的其他作业。由于主作业在服务器场管理员帐户下运行,因此该作业将能够启动新的计时器作业。