Friday, November 20, 2009

Trying to use an SPWeb object that has been closed or disposed and is no longer valid.

If your using share point object model and your getting this error -


"Trying to use an SPWeb object that has been closed or disposed and is no longer valid."
The best practice is to dispose objects either by calling Dispose() in finally block or with using clause.


following is the code snippet causing the problem -

using (SPSite site = SPContext.Current.Site)
{
site.AllowUnsafeUpdates = true;
using (SPWeb web = site.OpenWeb())
{
web.AllowUnsafeUpdates = true;
SPList list = web.Lists["UserProfileInfo"];
SPListItem Item;
if(string.IsNullOrEmpty(hdnListID.Value))
Item = list.Items.Add();
else
Item =list.Items.GetItemById(Convert.ToInt32(hdnListID.Value));


Item["Initial"] = ddlInitial.SelectedIndex;
Item["FirstName"] = txtFN.Text;
Item["LastName"] = txtLN.Text;
.
.
.
.
.
.
web.Dispose();
}
site.Dispose();
}


The object is not created in the memory when you are using "using". You will find more details about the Best Practices: Using Disposable Windows SharePoint Services Objects HERE

No comments:

Post a Comment