SharePoint中的Event Handler有两种实现方式,分别是SPS2003的实现手段(需要在SharePoint 3.0 管理中心开启“向后兼容的事件处理程序”)和SPS2007的实现手段,具体的区别各位就网上搜搜吧,这里要讲的是它们的部署注意事项。
SPS2003的实现手段,一般是实现IListEventSink接口;
而SPS2007则是继承SPItemEventReceiver并重载ItemXXXed(或ItemXXXing)等函数。
在编译好dll文件并放到GAC中后(现阶段实验测试,感觉SPS2007编译的dll是一定要放到GAC中的吧,SPS2003的则可以放在站点的bin目录下),SPS2003的可以通过进入列表页—>设置—>文档库设置—>高级设置—>填写“向后兼容的事件处理程序”的 程序集名称 和 类名称(命名空间.类名)实现自定义事件处理;
而SPS2007的方式就麻烦点,要通过编程的方式或Feature部署,可参考:编写和布置一个List Event Receivers
不过我试验了里面介绍的1.通过编程的方式布置、2.通过Feature来布置,结果都失败了,还是参考了《SharePoint 2007 教程》里的代码(编程方式部署)才成功了(代码如下)。
如果出现类似于:Test中的类 “Test.DemoHandler ” 不公开 IListEventSink 接口。无法将类型为 “ Test.DemoHandler” 的对象强制转换为类型“Microsoft.SharePoint.IListEventSink”.
则说明你是采用了SPS2003的方式来部署SP2007的事件处理dll啦。
以上是一点心得,供各位朋友参考:)
PS:总算搞定了事件处理的问题,累人的事~