Sharepoint 2013自定义计时器作业在开发服务器上运行但不在生产服务器上运行

时间:2014-02-01 05:05:27

标签: sharepoint sharepoint-2010 sharepoint-2013 timer-jobs

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

我已按照以下步骤在开发服务器上对其进行调试1.)在各自的站点上部署计时器作业。 2.)在services.msc中重新启动计时器服务3.)然后在Visual Studio中执行附加以处理OWSTIMER。 4.)最后转到SharePoint 2013管理中心 - >监控 - >查看作业定义并单击相应的计时器作业,然后说立即运行。

执行此操作后,使用Execute()方法在visual studio中命中断点。所以在开发服务器中它正在运行。

现在在生产服务器上我无法使用visual studio进行调试,因此我部署了打包的解决方案(.wsp)。

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

现在在生产服务器上,我按照以下步骤操作:1。)在services.msc中重新启动计时器服务2.)最后转到SharePoint 2013管理中心 - >监控 - >查看作业

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

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

3 个答案:

答案 0 :(得分:0)

在我看来,有两个问题:

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

答案 1 :(得分:0)

以下是一些尝试:

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

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

答案 2 :(得分:0)

如前所述here,您的工作程序集似乎未部署在GAC中。验证组件是否存在。