ItemUpdating事件接收器ItemAdded后叫了两声

我创建了一个事件接收器来处理一个文档库中的ItemAdded和ItemUpdating事件在SharePoint 2010ItemUpdating事件接收器ItemAdded后叫了两声

我遇到一个问题,当我添加一个文件该库(例如通过将其从Word中保存)正确调用ItemAdded方法,但随后会对ItemUpdating执行两次调用。我已经从我的处理程序中删除了所有代码,以确保它不是我在里面造成问题的东西。他们字面上看起来像:

public override void ItemUpdating(SPItemEventProperties properties) 

{

}

public override void ItemAdded(SPItemEventProperties properties)

{

}

有没有人有解决这个问题?

这里是事件接收我的Elements.xml文件:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 

<Receivers ListTemplateId="101">

<Receiver>

<Name>DocumentsEventReceiverItemUpdating</Name>

<Type>ItemUpdating</Type>

<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>

<Class>My.Namespace.DocumentsEventReceiver</Class>

<SequenceNumber>10000</SequenceNumber>

<Synchronization>Synchronous</Synchronization>

</Receiver>

<Receiver>

<Name>DocumentsEventReceiverItemAdded</Name>

<Type>ItemAdded</Type>

<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>

<Class>My.Namespace.DocumentsEventReceiver</Class>

<SequenceNumber>10000</SequenceNumber>

<Synchronization>Synchronous</Synchronization>

</Receiver>

</Receivers>

</Elements>

回答:

问题是,在期间Item UpdatingDocument library事件处理程序也检查Document是在入住模式或离店。这就是为什么它被调用两次。

你应该把你的代码

public override void ItemUpdating(SPItemEventProperties properties) 

{

base.ItemUpdating(properties);

if (properties.AfterProperties["vti_sourcecontrolcheckedoutby"] == null && properties.BeforeProperties["vti_sourcecontrolcheckedoutby"] != null)

{

//do stuff

}

}

详情Here是好文章,描述了Document's事件的整个情况。

以上是 ItemUpdating事件接收器ItemAdded后叫了两声 的全部内容, 来源链接: utcz.com/qa/262541.html

回到顶部