SharePoint,在模仿后抛出异常

时间:2009-02-26 16:56:28

标签: sharepoint

我们冒充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,并且调用此代码的用户是匿名用户。

亲切的问候,

2 个答案:

答案 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将运行系统帐户中的代码。这不会解决他/她的问题。