Expand Minimize

SPC056003: Do not instantiate SPSite in Receiver

Do not instantiate an SPSite object within an event receiver.

CheckId SPC056003
TypeName DoNotInstantiateSPSiteInEventReceiver
Severity Warning
Type Assembly

Do not instantiate an object of type 'Microsoft.SharePoint.SPSite'. Best practise is to get these objects from the current context.
Bad Practice

public override void ItemDeleting(SPItemEventProperties properties)
{
  using (SPSite site = new SPSite(properties.WebUrl))
  {
    using (SPWeb web = site.OpenWeb())
    {
      SPList list = web.Lists[properties.ListId];
      SPListItem item = list.GetItemByUniqueId(properties.ListItemId);
      // Operate on an item.
    }
  }
}

Good Practice
public override void ItemDeleting(SPItemEventProperties properties)
{
  // Retrieve SPWeb and SPListItem from SPItemEventProperties instead of
  // from a new instance of SPSite.
  SPWeb web = properties.OpenWeb();
  // Operate on the SPWeb object.
  SPListItem item = properties.ListItem;
  // Operate on an item.
}

To suppress this violation in managed code add the following attribute to the method which contains the instruction (available since SPCAF version v5.2). Learn more about SuppressMessage here.

// Important: Ensure to have #define CODE_ANALYSIS at the beginning of your .cs file
[SuppressMessage("SPCAF.Rules.BestPracticesGroup", "SPC056003:DoNotInstantiateSPSiteInEventReceiver", Justification = "Provide reason for suppression here")]
Disclaimer: The views and opinions expressed in this documentation and in SPCAF do not necessarily reflect the opinions and recommendations of Microsoft or any member of Microsoft. SPCAF and RENCORE are registered trademarks of Rencore. All other trademarks, service marks, collective marks, copyrights, registered names, and marks used or cited by this documentation are the property of their respective owners.