2009-02-26 5 views
1

Wir imitieren die Identität eines SharePoint-Benutzers und versuchen, auf ein Listenelement zuzugreifen.SharePoint mit Ausnahme nach Identitätswechsel

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 
        } 
       } 
      } 
     } 

Wir sind in der Lage einen Griff auf der Liste zu bekommen, aber sobald wir jede Eigenschaft von SPListItemCollection „Elemente“, um versuchen, erhalten wir eine COM-Ausnahme: 532459699.

Wir FBA laufen und der Benutzer, der diesen Code aufruft, ist ein anonymer Benutzer.

Mit freundlichen Grüßen

Antwort

0

Haben Sie versucht ElevatedPrivileges anstelle eines Token?

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); 
} 

Bitte geben Sie auch volle Stack-Trace, um uns den besten Weg, um Ihnen zu helfen. Wenn Sie nicht wissen, wie Sie das in web.config aktivieren können, überprüfen Sie einen der vielen Blogposts zu diesem Thema here.

0

SPSecurity.RunWithElevatedPrivileges wird den Code im Systemkonto ausführen. Das wird sein Problem nicht lösen.