sharepointspweb

Dispose of an SPWeb that is being returned from a function


We have code where at times we'll be returning an SPWeb object from a function. So for example:

public SPWeb getDeptWeb()
{
    SPWeb deptWeb = SpSite.OpenWeb(SpContext.Web.ID);
    ...
    return deptWeb;
}

How can we dispose of the SPWeb object in this instance? Or is it sufficient to dispose it where we're accepting the returned parameter?


Solution

  • The best way is probably to dispose of the SPWeb in the caller, e.g. with the using statement:

    public SPWeb getDeptWeb()
    {
        SPWeb deptWeb = SpSite.OpenWeb(SpContext.Web.ID);
        // ...
        return deptWeb;
    }
    
    public void Foo()
    {
        using (SPWeb deptWeb = getDeptWeb()) {
            // Do something with the website...
        }
    }