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 Updating
Document 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