我的 VM 中有一个本地开发环境。(SharePoint server 2013 SP1,Visual Studio Ultimate 2013-update3)。我正在尝试将事件接收器添加到 ItemDeleting 上的文档库。将文档删除到 doc lib 会将项目添加到我的自定义列表“日志”中。我的编码如下:
事件.cs
using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace SharePointProject1.EventReceiver1
{
public class EventReceiver1 : SPItemEventReceiver
{
public override void ItemDeleting(SPItemEventProperties properties)
{
//base.ItemDeleting(properties);
using (SPWeb web = properties.OpenWeb())
{
try
{
SPList list = web.Lists["Log"];
SPListItem newItem = list.Items.Add();
newItem["Title"] = properties.ListItem.Name;
newItem["DateAndTime"] = System.DateTime.Now;
newItem["Action"] = "Item Deleted";
newItem.Update();
}
catch (Exception ex)
{
throw ex;
}
}
}
元素.xml
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- <Receivers ListTemplateId="101" > -->
<Receivers ListUrl ="Doclib"
<Receiver>
<Name>EventReceiver1ItemDeleting</Name>
<Type>ItemDeleting</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>SharePointProject1.EventReceiver1.EventReceiver1</Class>
<SequenceNumber>10000</SequenceNumber>
</Receiver>
</Receivers>
</Elements>
Feature1.Template.xml
<?xml version="1.0" encoding="utf-8" ?>
<Feature xmlns="http://schemas.microsoft.com/sharepoint/">
</Feature>
我在 SP 站点上部署了解决方案并激活了该功能。
所以我有两个问题,
当我使用代码 ListTemplateId="101" 时,我没有收到任何错误。但事件接收器没有触发。当我删除时,“日志”列表没有更新。我错过了什么吗?
如果我在 ListUrl 中提供文档库名称,则会出现错误
“部署步骤“激活功能”中发生错误:列表“Doclib”不存在。请修复 ListUrl 属性。
请就正确的方法提出建议。为什么事件接收器没有触发?
提前致谢。