У меня есть веб-часть SP, которая извлекает данные из таблицы данных и отображает их в формате. Большинство экземпляров этой веб-части работают нормально, но эта конкретная возвращает ноль, когда она вызывается. Тем не менее, если я вошел на сайт (и не только), веб-часть возвращает список. Так странно Я проверил все вовлеченные веб-объекты, и все они наследуются от родительского объекта, для просмотра которого не требуется логин.
Вот фрагмент кода: (Имейте в виду, я унаследовал этот код, и он ни в коем случае не является «хорошим»)
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;
}