本篇是对SharePint事件接收器做一个简单介绍,对此有编程需要的工程师可以查看此篇。

  1. 概念

    事件接收器编程,是SharePoint工程师必学的一项技术,因为他功能强大而且常用。虽然编写过程并不复杂,但还是困扰了一些人的编程思路。在此讲述这方面的知识,帮助大家解决这方面的编程基础。

    说明:以下过程以SharePoint2013开发环境VS2013为IDE编程工具进行讲解。历史版本编程方式与此版本有所不同,但概念和编程思想一致。

    有五种类型的事件接收器:

    每种类型的事件接收器,都有自己的事件处理方法,这些方法用于捕获SharePoint的一些Event,例如在列表库上插入或删除列表项时,增加一些逻辑处理能力。

    我在这里放出MSDN的官方对以上五个类的方法说明,大家可以直接点击以上的类名去查看,不在此描述。

    1. 列表事件,SPListEventReceiver

    2. 列表项事件,SPItemEventReceiver

    3. 列表电子邮件事件,SPEmailEventReceiver

    4. Web事件,SPWebEventReceiver

    5. 列表工作流事件,SPWorkflowEventReceiver

  2. 解决方案结构

    VS2013中的SharePoint解决方案中去创建一个"SharePoint2013空项目",在这个项目上新建"事件接收器"项。

    向导会让你选择事件类型和事件源,并选择要处理的相应事件。

    一个处理类和一个Elements.xml描述文件被自动创建好。你需要做的就是编写这个类和修改这个xml文件。

    当然还有一个Feature1节点会在解决方案创建的同时自动创建出来。点击右键,在上下文菜单中选择"添加事件接收器"。这时会创建一个Feature1.EventReceiver.cs文件,我们还可以在这个类上定义一些代码,使得事件绑定更加的灵活。

    事件接收器类的编程是一个服务器OM API的开发,你的处理逻辑因你的需要而编写。

    Elements.xml是对接收器类的绑定的描述

    示例代码如下:

<?xmlversion="1.0" encoding="utf-8"?>
<Elementsxmlns="http://schemas.microsoft.com/sharepoint/">
  <ReceiversListTemplateId="101">
      <Receiver>
        <Name>MailLibEventReceiverEmailReceived</Name>
        <Type>EmailReceived</Type>
        <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
        <Class>MailLibEventHandler.MailLibEventReceiver.MailLibEventReceiver</Class>
        <SequenceNumber>10000</SequenceNumber>
      </Receiver>
  </Receivers>
</Elements>

3. 事件的绑定

4. 事件的同步/异步执行

5. 事件编程的注意事项

  • 调试事件接收器的进程是OWSTIMER,不是w3wp进程

  • 事件接收器的代码修改后,重新部署,再次监控进程调试时,不能进入调试中断的原因是需要修改项目工程中的程序集版本号,修改重新部署项目时会将DLL重新注册到GAC中。