Share via


SPSite Class

Represents a collection of sites in a Web application, including a top-level Web site and all its subsites. Each SPSite object, or site collection, is represented within an SPSiteCollection object that consists of the collection of all site collections in the Web application.

Inheritance Hierarchy

System.Object
  Microsoft.SharePoint.SPSite

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

<UpgradableAttribute> _
<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel := True)> _
<SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel := True)> _
Public Class SPSite _
    Implements IDisposable

Dim instance As SPSite
[UpgradableAttribute]
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel = true)]
[SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel = true)]
public class SPSite : IDisposable

Remarks

To instantiate an SPSite object for a specific site collection on an ASP.NET page, or for a specific site collection within a console application, use the SPSite constructor as follows:

Dim oSiteCollection As New SPSite("Absolute_URL")
SPSite oSiteCollection = new SPSite("Absolute_URL");

Within an ASP.NET application, you can use the Site property of the SPContext class to return an SPSite object that represents the current site collection, as follows:

Dim oSiteCollection As SPSite = SPContext.Current.Site
SPSite oSiteCollection = SPContext.Current.Site;

Use the Sites property of the SPWebApplication class to return an SPSiteCollection object that represents the collection of site collections in a SharePoint Web application. Use an indexer to return a single site collection from the collection. For example, if the collection of site collections is assigned to a variable named oSiteCollections, use oSiteCollections[index] in C#, or oSiteCollections(index) in Visual Basic, where index is either the display name or the index number of the site collection in the collection.

Certain objects implement the IDisposable interface, and you must avoid retaining these objects in memory after they are no longer needed. If you create your own SPSite object, you can use the Dispose method to close the object. You can also instead implement a using statement so that the .NET Framework common language runtime (CLR) automatically releases the memory that is used to store the site collection as follows:

Using oSiteCollection = New SPSite("Absolute_URL")
    ...
End Using
using (SPSite oSiteCollection = new SPSite("Absolute_URL")
{
    ...
}

However, if you have a reference to a shared resource, such as when the object is provided by the GetContextSite method in a Web Part, do not use either method to close the object. Using either method on a shared resource causes an Access Violation error to occur. In scenarios where you have a reference to a shared resource, instead let Windows SharePoint Services or your portal application manage the object.

For more information about good coding practices, see in Best Practices: Using Disposable Windows SharePoint Services Objects.

Important

If you install Infrastructure Update for Windows SharePoint Services 3.0 (KB951695) custom solutions may fail if they call the SharePoint object model while impersonation is suspended. If you use Windows authentication and your code calls the SharePoint object model from an IIS worker process, the request must impersonate the calling user’s identity. Windows SharePoint Services configures ASP.NET to impersonate the calling user automatically, but your code may work unexpectedly, or fail, if you suspend impersonation--for example, by calling the RevertToSelf function of the Windows API, or by calling the System.Security.Principal.WindowsIdentity.Impersonate method and passing IntPtr.Zero as the value of the user token parameter. Even if your code does not explicitly revert to self, it might be called by ASP.NET after it reverts to self, such as happens when implementing a virtual path provider; if your code does not impersonate the calling user, it might not function properly.

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

SPSite Members

Microsoft.SharePoint Namespace