我们冒充SharePoint用户并尝试访问列表项。
using (SPSite site = new SPSite(BAH.SN.Properties.Settings.Default.RootSiteUrl, new SPUserToken(currentUser.ImpersonationToken)))
{
using (SPWeb web = site.RootWeb)
{
SPList list = web.GetList(BAH.SN.Properties.Settings.Default.CommunitiesListPath);
if (list != null)
{
SPQuery query = CAMLHelper.GetSPQueryForCommunityListByOwner(user.UserName);
SPListItemCollection items = list.GetItems(query);
if (items != null && items.Count > 0)
{
// Read here
}
}
}
}
我们能够获得列表的句柄,但是一旦我们尝试访问SPListItemCollection“items”的任何属性,我们就会得到一个COM异常:532459699。
我们正在运行FBA,并且调用此代码的用户是匿名用户。
亲切的问候,
答案 0 :(得分:0)
您是否尝试过使用ElevatedPrivileges
代替令牌?
SPSecurity.RunWithElevatedPrivileges(delegate() {
//your code inside here, except use the SPSite ctor that only takes the url and get that frome SPContext:
// new SPSite(SPContext.Current.Site.Url);
}
另外请提供完整的堆栈跟踪,以便为我们提供最好的帮助。
如果您不知道如何在web.config
中启用该功能,请查看该问题的许多博文之一here。
答案 1 :(得分:0)
SPSecurity.RunWithElevatedPrivileges
将运行系统帐户中的代码。这不会解决他/她的问题。