WSS3SDK之:如何创建一个事件处理程序Feature
本例将展示如何添加一个简单的事件处理器来阻止从某列表中删除列表项。这个任务包括两个步骤:
- 在Visual Studio中创建事件处理程序
- 将事件处理程序作为Feature添加到WSS中
在Vistual Studio中创建一个事件处理程序
- 在Visual Studio中通过点击文件->新建->项目来新建一个项目
-
在新建项目对话框中,选择项目类型为 Visual C# ,模板选择类库 , 名称框中输入 DeletingEventHandler ,然后点击确定。
-
在解决方案管理器中,选择 DeletingEventHandler, 在项目菜单中点击添加引用。
- 在添加引用对话框中,选择Microsoft.SharePoint (位于 .NET 标签中)并点击确定。
- 在代码编辑器中,引用Microsoft.SharePoint 命名空间,如下所示:
using Microsoft.SharePoint; - 改变类名为DeletingAction 并使其继承自SPItemEventReceiver类,如下所示:
public class DeletingAction : SPItemEventReceiver -
用下列代码覆写该类的ItemDeleting方法。
public override void ItemDeleting(SPItemEventProperties properties)
{
properties.Cancel = true;
properties.ErrorMessage = "Deleting items from " + properties.RelativeWebUrl + " is not supported.";
} -
在解决方案管理器中,右击 DeletingEventHandler 结点,点属性。
-
在属性对话框中,点击签名标签,选择签名该组件,点击选择一个强命名密钥文件,然后点击 <新建…>.
-
在创建强命名密钥对话框中,输入 DeletingEventHandler.snk 作为密钥文件名,您也可以给密钥指定一个密码,点击确定。
-
通过快捷键CTRL+SHIFT+B编译该项目。
-
在 Visual Studio项目文件夹下找到
\DeletingEventHandler\bin\Debug
文件夹,将 DeletingEventHandler.dll 文件拖放到Local_Drive:\WINDOWS\assembly
来进行DLL的全局部署。
将事件处理器作为Feature来添加
-
在 Local_Drive
:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/FEATURES
下创建一个文件夹,名为 DeletingEventHandler。 - 在该文件夹下新建一个Feature.xml 文件来标识该Feature,内容如下。该Featuer的范围是网站。
<Feature Scope="Web"
Title="Deleting Event Handler"
Id="GUID"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="Elements.xml"/>
</ElementManifests>
</Feature> -
替换上一步中的GUID 占位符。可以通过guidgen.exe 生成一个新的GUID。该命令行工具位于Local_Drive
:\Program Files\Microsoft Visual Studio 8
。 - 在DeletingEventHandler文件夹中创建一个元素文件Elements.xml file 来标识事件处理程序的组件,类,以及方法。本例将事件处理程序应用到网站中的所有通知列表上。
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListTemplateId="104">
<Receiver>
<Name>DeletingEventHandler</Name>
<Type>ItemDeleting</Type>
<SequenceNumber>10000</SequenceNumber>
<Assembly>
DeletingEventHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a26b5449ac4a4cf3</Assembly>
<Class>DeletingEventHandler.DeletingAction</Class>
<Data></Data>
<Filter></Filter>
</Receiver>
</Receivers>
</Elements> -
您可以通过如下方法获取组件的 Public Key Token 。在Windows资源管理器中找到Local_Drive
:\WINDOWS\assembly下的
DeletingEventHandler.dll 文件,右击该文件,点属性,在属性对话框的一般标签中,选择并拷贝token。 -
在命令行中,输入下列命令来安装和激活Feature,然后重启IIS( Microsoft Internet Information Services)使变更生效。
stsadm -o installfeature -filename DeletingEventHandler\feature.xml
stsadm -o activatefeature -filename DeletingEventHandler \feature.xml -url http://Server/Site/Subsite
iisreset