Я пытаюсь отобразить список пользователей в пользовательской веб-части с помощью UserProfileManager.По какой-то причине я могу просматривать веб-части, и все профили выводятся на экран (возможно, потому что я администратор).Но когда в систему входит обычный пользователь, он сталкивается со страницей 403.
Я немного прочитал об этом и знаю, что это как-то связано с разрешениями.Вот что у меня в коде:
private DataTable GetProfiles()
{
DataTable dtUserProfile = new DataTable();
//...DataTable Columns
SPSecurity.RunWithElevatedPrivileges(delegate()
{
Guid guid = SPContext.Current.Site.ID;
using (SPSite intranet = new SPSite(guid))
{
SPUserToken userToken = intranet.Owner.UserToken;
//Get current intranet context.
SPServiceContext sContext = SPServiceContext.GetContext(intranet);
UserProfileManager profileManager = new UserProfileManager(sContext);
int totalUsers = int.Parse(profileManager.Count.ToString());
Random random = new Random();
for (int i = 0; i < NumberOfUsersToRetrieve(NoOfProfiles, totalUsers); i++)
{
int randNumber = random.Next(1, totalUsers);
DataRow drUserProfile;
UserProfile up = profileManager.GetUserProfile(randNumber);
drUserProfile = dtUserProfile.NewRow();
drUserProfile["DisplayName"] = up.DisplayName;
drUserProfile["FirstName"] = up["FirstName"].Value;
drUserProfile["LastName"] = up["LastName"].Value;
drUserProfile["Department"] = up["Department"].Value;
drUserProfile["ContactNumber"] = up["Office"].Value;
drUserProfile["MySiteUrl"] = up.PublicUrl;
dtUserProfile.Rows.Add(drUserProfile);
}
}
});
return dtUserProfile;
}
Мой код в основном получает случайную коллекцию пользователей в зависимости от количества пользователей, которых я хочу вернуть.
Возможно ли создатьSPUserToken для пользователя, что все разрешения, необходимые для получения профилей пользователей?
Спасибо!