2016-06-13 2 views
1

이 웹 메서드가있는 SharePoint 레이아웃 페이지가 있습니다.웹 메서드 호출시 SPContext가 null입니다.

[WebMethod(EnableSession = false)] 
     [ScriptMethod] 
     public static List<ItemData> GetItems(string SearchTerm) 
     { 

    SPSecurity.RunWithElevatedPrivileges(delegate() 
      { 
       using (SPSite site = new SPSite(SPContext.Current.Web.Url)) 
       { 
        using (SPWeb web = site.RootWeb) 
        { 
         SPList list =   web.Lists.TryGetList("Data"); 
         _documentListId = list.ID; 
        } 
       } 
      }); 
} 

나는 아래의 코드

$.ajax({ 
     type: "POST", 
     url: "multispr.aspx/GetItems", 
     data: JSON.stringify({ SearchTerm: $('#SearchTerm').val() }), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     async: true, 
     success: function (data, status) { 
      self.Items(data.d); 
      myApp.hidePleaseWait(); 
     }, 
     failure: function (data) { 
      alert(data.d); 
     }, 
     error: function (data) { 
      alert(data.d); 
     } 
    }); 

문제는 웹 방법이 아약스 코드를 호출 할 때 SPContext가 null을오고 있다는 것입니다이 웹 메소드를 호출합니다. SPContext에 중단 점을 넣은 다음 값이 어떤 식 으로든 그 값을 가져 와서 채 웁니다. 중단 점이 없으면 채 웁니다.

누군가이 문제를 해결하는 데 도움을 줄 수 있습니까?

감사

답변

0

그럼 확실하지 왜 그것을하고있어하지만 난 SPSecurity.RunWithElevatedPrivileges 외부 (대표() 코드를 SpContext.Current를 이동하면 그때 상황에 맞는로드 매번 얻을 내 문제를 해결하는 수 있습니다.

+0

'RunWithElevatedPrivilegs'를 사용하면 실제로 컨텍스트가 만들어 지므로 현재 컨텍스트가 호출 내에서 유효하지 않게됩니다 – Verthosa

관련 문제