用timer job 实现文档下载次数
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
在SharePoint 2010中,为了跟踪和管理文档的下载次数,我们可以利用Timer Job这一功能强大的工具。Timer Job是SharePoint中的一个核心概念,它允许开发者在预定的时间间隔内执行后台任务,如数据清理、统计计算或者,就像在这个案例中,记录文档的下载活动。下面将详细阐述如何实现这一功能。 我们需要了解Timer Job的基本结构。一个Timer Job通常由两个主要部分组成:定义类和执行类。定义类继承自`Microsoft.SharePoint.Administration.SPJobDefinition`,并设置相关的属性,如Job名称、描述、运行频率等。执行类则包含了实际执行的任务逻辑。 1. 创建Timer Job定义类: 在C#代码中,创建一个新类并继承`SPJobDefinition`,为Timer Job命名,如`DocumentDownloadCountJob`。设置`Title`、`Description`、`JobCategory`、`AssemblyName`、`TypeName`等相关属性,这些属性将用于在SharePoint管理中心注册和调度Job。 ```csharp public class DocumentDownloadCountJob : SPJobDefinition { // 初始化方法,设置Job的基本属性 public DocumentDownloadCountJob() : base() { // 设置属性... } // 构造函数,用于通过名称注册Job public DocumentDownloadCountJob(SPWebApplication webApp, string jobName, SPServiceContext serviceContext) : base(jobName, webApp, serviceContext, SPJobLockType.None) { // 设置属性... } } ``` 2. 创建Timer Job执行类: 创建一个新类,比如`DocumentDownloadCounter`,该类不需继承任何特定的基类,但需要包含执行任务的方法。在这个方法中,我们将遍历SharePoint库中的文档,检查下载事件,并更新下载计数。 ```csharp public class DocumentDownloadCounter { public void CountDownloads(SPWeb web) { // 获取所有列表 SPListCollection lists = web.Lists; // 遍历每个列表 foreach (SPList list in lists) { // 检查是否为文档库 if (list.BaseType == SPBaseType.DocumentLibrary) { SPItemCollection items = list.Items; // 遍历每个文档 foreach (SPItem item in items) { // 获取并更新下载计数字段 int downloadCount = (int)item["DownloadCount"]; downloadCount++; item["DownloadCount"] = downloadCount; item.Update(); } } } } } ``` 3. 注册和调度Timer Job: 在SharePoint解决方案部署时,我们需要在全局或特定网站应用的定时服务上注册Timer Job。这通常在Feature激活事件中完成。 ```csharp public override void FeatureActivated(SPFeatureReceiverProperties properties) { SPWebApplication webApp = (SPWebApplication)properties.Feature.Parent; DocumentDownloadCountJob job = new DocumentDownloadCountJob(webApp, "文档下载计数", properties.Feature.Parent as SPServiceContext); job.Schedule(); } ``` 4. 设置定时计划: 根据需求,可以自定义Timer Job的执行频率,如每天、每周或按需执行。在`DocumentDownloadCountJob`的构造函数中设置`Interval`和`NextRunTime`属性。 5. 实际运行: 当设置完成后,Timer Job将在指定的时间自动运行,调用`CountDownloads`方法来统计并更新文档的下载次数。 需要注意的是,SharePoint 2010的事件日志并不记录文档下载事件,因此我们通常需要借助IIS logs或者自定义跟踪逻辑来捕获下载行为。另外,为了减少对SharePoint服务器性能的影响,可以考虑在后台线程中执行下载计数,或者仅针对特定的高关注度文档进行计数。 总结,通过创建一个Timer Job,我们可以定期检查SharePoint 2010中的文档库,统计并更新每个文档的下载次数,从而提供有价值的使用数据。这个过程涉及了Timer Job的定义、执行、注册和调度等多个环节,体现了SharePoint平台的灵活性和可扩展性。
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/TXT.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
- 1
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
- net9607256062013-06-17很好用的程序代码!不错!能用!找了很久了!
- jinfact2014-04-18实用,真的很不错
![avatar](https://profile-avatar.csdnimg.cn/849794a238c74c09a3f5fe0e58aaef87_cxx2325938.jpg!1)
- 粉丝: 369
- 资源: 11
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)