SharePoint EventHandler的使用!

Sharepoint中的事件处理就是 EventHandler,我知道有这个东西!但是自己一直没有亲手做过一次! 今天按照步骤一步步做一遍,全当笔记记录吧! 学习Sharepoint知识,基本上都是来自于 杨永刚先生的<<Microsoft Office SharePoint Server 2007>>案例实战开发和张建义写的<<亮剑.net sharepoint 开发实践>>! 所以下面的东西基本上都是来源以上书中内容.

  1. 配置EventHandler
    1. 打开SP管理中心,依次点击:应用程序管理(Application Management)-->web应用程序常规设置(Web application general settings)
    2. 打开web应用程序常规设置页面: Web Application [如:http://localhost:5000]:设置为要开启的web app地址,如果你不注意这里,你有可能开启了其他站点的EventHandler![哈哈,我以前经常遇到] ,设置向后兼容的事件处理(Backward-Compatible Event Handlers ) 为on
  2. 打开刚才设置的Web Application [http://localhost:5000]地址,新建一个文档库[KB],点击KB-->设置-->高级设置:发现多了一项:向后兼容的事件处理程序。根据输入框,需要我们提供 程序集,类3

  3. 开发EventHandler最好安装WSS Extensions!  新建工程:MyEventHandlerStudy,新建EventHandler_DocLibrary类并继承IListEventSink接口 贴代码吧.

    1. 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]

  

MOSS开发培训-Event Handler开发.pdf

 

Technorati 标签: ,

 

你可能感兴趣的:(SharePoint)