SharePoint Debug - SharePoint timer job 发送重复邮件
来源:互联网 发布:软件行业 平均 利润率 编辑:程序博客网 时间:2024/05/06 09:06
SharePoint环境是这样的,有两个前端服务器,采用负载均衡技术。Farm中有两个web application。我自定义了一个timer job,定时发送邮件给SharePoint用户,但是有的用户却经常收到重复的邮件,内容一模一样,发送时间前后相差无几。
为了解决问题,首先需要判断到底是是SharePoint发送了重复的邮件,还是邮件服务器发送了重复的邮件。于是我拿到重复的两封邮件,使用outlook查看Message-ID,发现虽然这两封邮件内容一样,但是Message-ID是不一样的,说明这两封邮件并不是重复的邮件,而确实是SharePoint发了两封不同的邮件出来。
通常情况下,发送重复邮件可能是由于一个timer job运行在不同的web application中。于是我只留下一个web application下的timer job,其他web application下的发邮件的timer job都disable了,问题还是没有解决。于是怀疑是负载均衡的问题。
发邮件的timer job每发送一封邮件都会写一条SharePoint log,我在检查两个server的log的时候,发现同一封邮件,在两个server上都有log记录,这就说明了,虽然timer job运行在同一个web application下,但是在负载均衡的环境中运行timer job,每一个server都会发一次邮件,于是怀疑是代码有问题,尤其是timer job的锁。
在检查代码的时候发现,果然是timer job的锁的问题。我们知道在定义timer job的时候,构造函数中需要指定锁的类型:
public EmailNotificationJob(string name, SPWebApplication webApp) : base(name, webApp, null, SPJobLockType.ContentDatabase){ ... ...}
其中锁的类型是一个枚举:
// Summary: // Values for the lock type of a job definition. public enum SPJobLockType { // Summary: // No locks None = 0, // // Summary: // Locks the content database before processing. ContentDatabase = 1, // // Summary: // Locks the job to prevent it from running on more than one machine. Job = 2, }代码中指定锁的类型是SPJobLookType.ContentDatabase,而正确的锁的类型应该是SPJobLookType.Job,从定义来看,SPJobLookType.Job只允许timer job运行在一台server上,正适合使用在负载均衡的环境中。于是将timer job的锁改为Job,从而解决了问题。
- SharePoint Debug - SharePoint timer job 发送重复邮件
- Sharepoint Custom Timer Job
- 清除sharepoint timer job 缓存
- 创建SharePoint 2010 Timer Job
- Sharepoint 发送邮件
- sharepoint timer job 读取config文件内容
- SharePoint 2010 自定义计时器(Timer Job)
- sharepoint 2010 如何创建一个timer job
- SharePoint 2013 中开发Timer Job
- SharePoint中开发自定义Timer Job
- sharepoint 2010 用timer job 实现文档下载次数
- sharepoint 2010 用timer job 实现列表评论次数
- SharePoint timer job运行时的账户问题
- Sharepoint Custom Timer Job (Sharepoint 自定义定时器,定时工作,定时启动)
- 步步为营 SharePoint 开发学习笔记系列 七、SharePoint Timer Job 开发
- [SharePoint] 通过Sharepoint 发邮件
- sharepoint time job
- 编程实现sharepoint工作流中的发送邮件功能(转载)
- Jquery 判断checkbox是否选中
- 自然图像抠图/视频抠像技术梳理(image matting, video matting)
- 使用python编写的监听端
- CSS长度单位及区别 em ex px pt in
- ajax(二) js实现ajax请求
- SharePoint Debug - SharePoint timer job 发送重复邮件
- WKWebView
- 第15周 在oj上玩指针<2>
- SVN客户端CornerStone
- FTP实现断点上传下载功能
- java多线程
- Linux netfilter 学习笔记 之十二 ip层netfilter的NAT模块代码分析
- static类成员和static变量用法
- IOS 配置XCode捕获程序异常