본문 바로가기

Developer

닫히거나 삭제되어 더 이상 유효하지 않은 SPWeb 개체를 사용하려고 합니다.

 

Sharepoint 2010 에서 PostBack Event가 발생 되었을 때 아래와 같은 메시지가 나타나면서 에러가 발생되었음.

국문 : Microsoft.SharePoint.SPException: 닫히거나 삭제되어 더 이상 유효하지 않은 SPWeb 개체를 사용하려고 합니다.

영문 : Microsoft.SharePoint.SPException Trying to use an SPWeb object that has been closed or disposed and is no longer valid
 

스텍 추적 내용은 아래와 같음
 

[SPException: 닫히거나 삭제되어 더 이상 유효하지 않은 SPWeb 개체를 사용하려고 합니다.]
   Microsoft.SharePoint.WebPartPages.SPWebPartManager.get_Web() +26872963
   Microsoft.SharePoint.WebPartPages.SPWebPartManager.ActivateConnections() +316
   System.Web.UI.WebControls.WebParts.WebPartManager.OnPageLoadComplete(Object sender, EventArgs e) +70
   System.EventHandler.Invoke(Object sender, EventArgs e) +0
   System.Web.UI.Page.OnLoadComplete(EventArgs e) +11057518
   Microsoft.SharePoint.WebControls.LayoutsPageBase.OnLoadComplete(EventArgs e) +50
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3160

 

위와 같은 문제는 일단 아래와 같은 코드에서 발생되었음

using(SPSite site = SPContext.Current.Site)
using(SPWeb web = site.RootWeb)
{
		..........
		..........
}

 

…에서 한 작업 내용은 생성한 리스트에서 CAML Query를 이용하여 Data를 가져와 바인딩 한 것 뿐..

 

왜 이런 에러가 발생되었는지는 정확히 파악하지 못함.

해결 방법은 위의 코드를 아래와 같이 변경하면 가능함

using (SPSite site = new SPSite("http://siteUrl"))
using (SPWeb web = site.OpenWeb())
{
	......
	......
}

혹은 Using 문 없이 아래와 같이도 가능함

SPWeb web = SPContext.Current.Site.RootWeb;

 

명확한 원인을 아직 파악하지 못하여..

왜 그런 것인지에 대하여 설명하지 못합니다.

죄송합니다.

 

일단. 에러가 나지 않도록 조치는 가능 할 것 같습니다.

 

감사합니다.