我有一個SP Web部件,它從數據表中提取數據並顯示格式。這個Web部件的大部分實例都能正常工作,但是這個特定的實例在被調用時會返回null。但是,如果我登錄到網站(而不是匿名),則Web部件會返回該列表。很奇怪。我檢查了所有涉及的Web對象,它們都從父級繼承,不需要登錄即可查看。Sharepoint OpenWeb()在未登錄時返回null
下面的代碼片段:(請記住我繼承了這個代碼,它絕不是「好」)
public static DataTable GetDataTableFromSPList(string webUrl, string listName, Int32 numToReturn, string sortCol, string ascend)
{
SPListItemCollection coll = null;
DataTable dt = null;
string siteUrl = GetUrlPrefix();
using (SPSite site = new SPSite(siteUrl + webUrl))
{
using (SPWeb web = site.OpenWeb()) //this returns NULL when logged in anon???
{
try
{
SPList list = null;
list = web.Lists[listName];
SPQuery query = new SPQuery();
string qry = "<OrderBy><FieldRef Name='" + sortCol + "' Ascending='" + ascend.ToUpper() + "' /></OrderBy>";
query.Query = qry;
query.RowLimit = Convert.ToUInt32(numToReturn);
coll = list.GetItems(query);
if (coll != null)
{
dt = coll.GetDataTable();
}
}
catch (Exception ex)
{
WriteLog(ex.Message, System.Diagnostics.EventLogEntryType.Error);
}
}
}
return dt;
}
是,整個網站爲匿名訪問啓用。 RunWithElevatedPrivs確實解決了這個問題..我很想知道發生了什麼。 –