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にブレークポイントを置き、それが何らかの形で値を参照すると、何らかの理由でそれが取得され、ブレークポイントは入れられません。
誰かがこの問題を解決する手助けをすることができますか?
おかげ
'RunWithElevatedPrivilegs'を使用すると、実際には新しいコンテキストが作成され、現在のコンテキストはコール内で無効になります – Verthosa