Accès refusé lors de l'utilisation RunWithElevatedPrivileges?
-
27-09-2019 - |
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"];
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);