私はデータテーブルからデータを取り出してフォーマットされたSP Webパーツを持っています。このWebパーツのインスタンスのほとんどは正常に動作しますが、この特定のインスタンスは呼び出されるとnullを返します。しかし、私がサイトにログインしていれば、webpartはリストを返します。とても奇妙です。私は、関連するすべての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は本当に問題を解決します。私は何が起こっているのか知りたいです。 –