SPC110211: Dispose SPSite created by SPSiteCollection.Add

The SPSiteCollection.Add method creates and returns a new SPSite object. You should dispose of any SPSite object returned from the SPSiteCollection.Add method.

TypeName: DisposeSPSiteCreatedBySPSiteCollectionAdd
CheckId: SPC110211
Severity: CriticalWarning
Type: AssemblyFileReference
Resolution

The SPSiteCollection.Add method creates and returns a new SPSite object. You should dispose of any SPSite object returned from the SPSiteCollection.Add method. See sample from MSDN:

Bad Coding Practice

void SPSiteCollectionAddLeak()
{
    SPWebApplication webApp = new SPSite("http://moss").WebApplication;
    SPSiteCollection siteCollections = webApp.Sites;
    SPSite siteCollection = siteCollections.Add("sites/myNewSiteCollection", "DOMAIN\User", "[email protected]");
    // SPSite siteCollection leak.
}

Good Coding Practice
void SPSiteCollectionAddNoLeak()
{
    SPWebApplication webApp = new SPSite("http://moss").WebApplication;
    SPSiteCollection siteCollections = webApp.Sites;
    using (SPSite siteCollection = siteCollections.Add("sites/myNewSiteCollection", "DOMAIN\User", "[email protected]"))
    {
    } // SPSite object siteCollection.Dispose() automatically called.
}

Remarks

Rule relates to SPDisposeCheckId 'SPDisposeCheckID_240'. To ignore this rule add the attribute '[SPDisposeCheckIgnore(SPDisposeCheckID.SPDisposeCheckID_240, "Caller will dispose")]' to your method.

Links

comments powered by Disqus