调用Web方法时,SPContext为null

时间:2016-06-13 20:16:55

标签: c# sharepoint sharepoint-2013

我有一个SharePoint布局页面,其中包含此Web方法。

 [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;
                    }
                }
            });
}

我使用以下代码

调用此Web方法
 $.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);
        }
    });

问题是当通过此ajax代码调用Web方法时,SPContext将为null。如果我在SPContext上放置一个断点并查看它的值,那么它会以某种方式检索它并将其填入但不会没有断点。

有人可以帮我解决这个问题。

由于

1 个答案:

答案 0 :(得分:1)

不知道为什么会这样做但是如果我在SPSecurity.RunWithElevatedPrivileges(delegate()代码之外移动SpContext.Current,那么我可以每次都加载上下文并解决我的问题。