2010-06-15 12 views
8

Je veux que l'utilisateur régulier puisse accéder à la "liste d'information d'utilisateur" dans le site racine de Mysite. J'utilise la méthode "RunWithElevatedPrivileges". Toujours jeter l'accès a refusé l'erreur. par exemple ma collection de sites racine pour mysite est "http://network.test.com". l'utilisateur veut évaluer la liste d'informations de l'utilisateur de cette collection de sites. Comment peut-il accéder à cela?Accès refusé lors de l'utilisation de RunWithElevatedPrivileges?

SPSecurity.RunWithElevatedPrivileges(delegate 
{ 
    using (SPSite site = new SPSite(SPContext.Current.Web.Site.ID)) 
    { 

    ServerContext sc = ServerContext.Current; 
    UserProfileManager upm = new UserProfileManager(sc); 
    UserProfile up = null; 
    //get current user's profile (visitor) 
    if (upm.UserExists(SPContext.Current.Web.CurrentUser.LoginName)) 
    { 
     up =upm.GetUserProfile(SPContext.Current.Web.CurrentUser.LoginName); 

     SPWeb web = SPContext.Current.Web; 
     SPList userInformationList = web.Lists["User Information List"]; 
+0

avez-vous exécuté le code sur le serveur qui contient le SharePoint? –

Répondre

6

SPContext.Current fonctionne en dehors du contexte RunWithelevatedPrivileges élevée. Pour plus d'informations voir this blog.

6

Vous définissez votre SPWeb sur SPContext.Current.Web, cela ne dispose pas de privilèges élevés. Seuls les SPWebs créés à partir de SPSites créés dans le délégué sont élevés.

Vous devez remplacer

SPWeb web = SPContext.Current.Web; 

avec

SPWeb web = site.OpenWeb(SPContext.Current.Web.ID); 
-1

vous configurez votre SPWeb à SPContext.Current.Web cela ne dispose pas des privilèges élevés. Référez-vous à ce post: