我有一个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上放置一个断点并查看它的值,那么它会以某种方式检索它并将其填入但不会没有断点。
有人可以帮我解决这个问题。
由于
答案 0 :(得分:1)
不知道为什么会这样做但是如果我在SPSecurity.RunWithElevatedPrivileges(delegate()代码之外移动SpContext.Current,那么我可以每次都加载上下文并解决我的问题。