2016-06-13 18 views
1

私はこのWebメソッドを持つSharePointレイアウトページを持っています。Webメソッドを呼び出すときに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); 
     } 
    }); 

問題で、このWebメソッドを呼び出すには、Webメソッドは、このAjaxコードによって呼び出されたときにSPContextがnullを出ているということです。私がSPContextにブレークポイントを置き、それが何らかの形で値を参照すると、何らかの理由でそれが取得され、ブレークポイントは入れられません。

誰かがこの問題を解決する手助けをすることができますか?

おかげ

答えて

0

なぜそれをやっているまあわからないが、私はSPSecurity.RunWithElevatedPrivileges(デリゲート()コード外SpContext.Currentを移動した場合、私は、コンテキストロード毎回取得している私の問題を解決することができます。

+0

'RunWithElevatedPrivilegs'を使用すると、実際には新しいコンテキストが作成され、現在のコンテキストはコール内で無効になります – Verthosa

関連する問題