Question

Je veux utilisateur peuvent accéder à la « Liste des informations utilisateur » dans le site racine Mysite. Je suis en utilisant la méthode « RunWithElevatedPrivileges ». jetant encore erreur d'accès refusé. par exemple ma collection de sites racine pour monsite est « http://network.test.com ». l'utilisateur veut évaluer liste UserInformation cette collection de sites. Comment peut-il accéder à cela?

 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"];
Était-ce utile?

La solution

exécute SPContext.Current en dehors du contexte RunWithelevatedPrivileges élevé. Pour plus d'informations voir ce blog .

Autres conseils

vous configurez votre SPWeb à SPContext.Current.Web, cela ne dispose pas des privilèges élevés. Seuls les SPWebs créés à partir SPSites créés à l'intérieur du délégué sont élevés.

Vous devez remplacer

SPWeb web = SPContext.Current.Web;

avec

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

vous configurez votre SPWeb pour SPContext.Current.Web cela ne dispose pas des privilèges élevés. Reportez-vous ce poste :

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top