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;
명확한 원인을 아직 파악하지 못하여..
왜 그런 것인지에 대하여 설명하지 못합니다.
죄송합니다.
일단. 에러가 나지 않도록 조치는 가능 할 것 같습니다.
감사합니다.