2

我在 Visual Studio 2012 中为 SharePoint 2013 开发了一个自定义计时器作业,用于发送电子邮件通知。问题是它在开发服务器上运行良好。

我已按照以下步骤在开发服务器上对其进行调试 1.) 在相应站点上部署计时器作业。2.) 重新启动 3.) 中的计时器服务services.msc。然后在 Visual Studio 中附加到进程 OWSTIMER。4.) 最后转到 SharePoint 2013 Central Administration->Monitoring->Review Job Definition,然后单击相应的计时器作业并说立即运行。

完成此操作后,该Execute()方法会在 Visual Studio 中命中断点。所以在开发服务器中它正在运行。

现在在生产服务器上,我无法使用 Visual Studio 进行调试,所以我已经部署了打包的解决方案(.wsp)。

我可以看到该功能已在网站集管理-> 网站集功能中激活。

现在在生产服务器上,我按照以下步骤 1.) 重新启动计时器服务services.msc2.) 最后转到 SharePoint 2013 Central Administration->Monitoring->Review Job

进一步测试计时器作业是否在生产服务器上运行,我PortalLog.LogString("Flow test1");在 Execute() 方法开始时使用过。现在它在开发服务器上运行,我在 SharePoint 日志中看到了消息,但在生产服务器上,我在中央管理中单击立即运行后,在日志中看不到“Flow Test1”。

任何人都可以提出问题和可能的解决方案吗?

4

3 回答 3

0

这里有几件事可以尝试:

  • 转到管理中心并从那里运行计时器作业。然后进入作业历史页面,检查是否成功完成。如果出现错误,您应该会从那里看到错误消息。这将为您提供有关正在发生的事情的线索。
  • 正如 Mazin 所说,重新启动所有服务器中的计时器服务。部署后,DLL 会被进程缓存,您不会看到您的更改得到反映。
  • 浏览 SharePoint 日志并搜索异常或错误。您可以通过选择工作运行的时间范围来缩小搜索范围。您可以使用以下 PS 脚本:

Get-SPLogEvent -StartTime "02/02/2014 11:00" -EndTime "02/02/2014 13:00" | Out-GridView

于 2014-02-02T14:20:05.423 回答
0

在我看来,有两个问题:

  1. 您应该使用其他方式记录LoggingService应该是首选方式。使用 WriteEvent 写入 EventLog 或使用 WriteTrace 写入 ULS 日志。
  2. 运行作业。确保所有 Web 服务器上的 Owstimer.exe 服务都已重新启动(可以通过此powershell 脚本完成)。我希望您在 powershell 脚本或功能接收器中正确安排了您的工作。
于 2014-02-01T21:43:51.913 回答
0

如此处所述您的作业程序集似乎未部署在 GAC 中。验证该程序集是否存在。

于 2014-02-05T07:36:57.383 回答