ItemUpdating is called twice after ItemAdded in the event receiver

I created an event receiver to handle the ItemAdded and ItemUpdating events in a document library in SharePoint 2010.

I ran into an issue where when I add a document to the library (for example, by saving it from Word), the ItemAdded method is called correctly, followed by two calls to ItemUpdating. I have removed all code from my handlers to make sure it is not what I am doing internally that is causing the problem. They literally look like this:

public override void ItemUpdating(SPItemEventProperties properties)
{
}

public override void ItemAdded(SPItemEventProperties properties)
{
}

      

Does anyone have a solution to this problem?

Here is my elements.xml file for the event receiver:

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

      

+3


source to share


1 answer


The problem is that In Document library

event handlers in time Item Updating

also check what Document

is in Check or Disable mode . This is why it is called twice.

You should put your code in



 public override void ItemUpdating(SPItemEventProperties properties)
  {  
    base.ItemUpdating(properties);
    if (properties.AfterProperties["vti_sourcecontrolcheckedoutby"] == null && properties.BeforeProperties["vti_sourcecontrolcheckedoutby"] != null)
     {
       //do stuff
     }
  }

      

For more details Here is a good article for describing the whole event situation . Document's

+7


source







All Articles