Sharepoint中的事件处理就是 EventHandler,我知道有这个东西!但是自己一直没有亲手做过一次! 今天按照步骤一步步做一遍,全当笔记记录吧! 学习Sharepoint知识,基本上都是来自于 杨永刚先生的<<Microsoft Office SharePoint Server 2007>>案例实战开发和张建义写的<<亮剑.net sharepoint 开发实践>>! 所以下面的东西基本上都是来源以上书中内容.
- 配置EventHandler
- 打开SP管理中心,依次点击:应用程序管理(Application Management)-->web应用程序常规设置(Web application general settings)
- 打开web应用程序常规设置页面: Web Application [如:http://localhost:5000]:设置为要开启的web app地址,如果你不注意这里,你有可能开启了其他站点的EventHandler![哈哈,我以前经常遇到] ,设置向后兼容的事件处理(Backward-Compatible Event Handlers ) 为on
-
打开刚才设置的Web Application [http://localhost:5000]地址,新建一个文档库[KB],点击KB-->设置-->高级设置:发现多了一项:向后兼容的事件处理程序。根据输入框,需要我们提供 程序集,类
-
开发EventHandler最好安装WSS Extensions! 新建工程:MyEventHandlerStudy,新建EventHandler_DocLibrary类并继承IListEventSink接口 贴代码吧.
-
using System.IO; using Microsoft.SharePoint; namespace MyEventHandlerStudy { /// <summary> /// 需要继承:IListEventSink /// </summary> public class EventHandler_DocLibrary:IListEventSink { #region IListEventSink Members public void OnEvent(SPListEvent listEvent) { ///事件类型 [] if (listEvent.Type == SPListEventType.Insert) { string path = @"c:\test.log"; string content =@"用户“"+ listEvent.UserDisplayName + "”在" + listEvent.Title + "文档库里面新增了一个文件\r\n"; System.Collections.Hashtable ht = listEvent.PropertiesBefore; foreach (string key in ht.Keys) { content += key + "=" + ht[key] + "\r\n"; } using (StreamWriter sw = new StreamWriter(path, true)) { sw.Write(content); } }else if(listEvent.Type == SPListEventType.Delete){ string path = @"c:\test.log"; string content = @"用户“"+ listEvent.UserDisplayName + "“删除了一个文件!\r\n"; System.Collections.Hashtable htafter = listEvent.PropertiesAfter; foreach (string key in htafter.Keys) { content += key + "=" + htafter[key] + "\r\n"; } using (StreamWriter sw = new StreamWriter(path, true)) { sw.Write(content); } } #endregion } }
-
把该工程强签名(项目属性--签名),并把生成路径改为站点下面的bin路径(属性—>build—>output path)! 生成项目!用Reflector.exe 打开程序集! 把程序集内容输入到上面截图的文本框里面即可!
如:Assembly Name:MyEventHandlerStudy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c19bb35f3531b88e
Class Name:MyEventHandlerStudy.EventHandler_DocLibrary
现在就去KB文档库里面上传一个文件吧!哈哈去C盘看看text.log里面的东西吧!OH,你成功了![反正我是操作成功了,Good Luck]