Comment obtenir les utilisateurs de SharePoint via otite chronique?
Comment puis-je saisir efficacement les utilisateurs (avec leurs propriétés) à partir d'un web SharePoint à l'aide otite chronique?
Le code ci-dessous des résultats en plusieurs appels vers le serveur (une pour chaque utilisateur). C'est ridiculement inefficace.
Aussi, est-il possible d'effectuer un Filtre sur le serveur?
public static List<Contact> GetUsers(Uri requestUri, string Filter = "")
{
ClientContext context;
var users = new List<Contact>();
if (ClientContextUtilities.TryResolveClientContext(requestUri, out context, null))
{
using (context)
{
var web = context.Web;
var peopleManager = new PeopleManager(context);
context.Load(web, w => w.Title, w => w.Description, w => w.SiteUsers);
var siteUsers = web.SiteUsers;
context.ExecuteQuery();
foreach (var user in siteUsers)
if (user.PrincipalType == Microsoft.SharePoint.Client.Utilities.PrincipalType.User)
if (user.Title.ToLower().Contains(Filter.ToLower()) && !users.Any(x => x.FullName == user.Title))
{
var userProfile = peopleManager.GetPropertiesFor(user.LoginName);
context.Load(userProfile);
context.ExecuteQuery();
var contact = new Contact() { FullName = user.Title, EmailAddress = user.Email };
if (userProfile.IsPropertyAvailable("Title"))
contact.Position = userProfile.Title;
if (userProfile.IsPropertyAvailable("UserProfileProperties") && userProfile.UserProfileProperties.ContainsKey("WorkPhone"))
contact.PhoneNumber = userProfile.UserProfileProperties["WorkPhone"];
users.Add(contact);
}
}
}
return users;
}
OriginalL'auteur Matt Fitzmaurice | 2015-04-15
Vous devez vous connecter pour publier un commentaire.
Améliorations majeures
Depuis SharePoint otite chronique prend en charge Demande De Lots tous les profils utilisateur peuvent être récupérées à l'aide d'un seule demande, par exemple, au lieu de:
profils utilisateur peuvent être récupérées comme:
Améliorations mineures
1)Depuis SharePoint otite chronique prend en charge Les requêtes CAML, le filtrage de l'opération peut être effectuée sur le côté serveur, par exemple:
2)Vous pouvez également utiliser la suite de la vérification pour déterminer si le profil de l'utilisateur sont disponibles pour un utilisateur spécifié:
Modifiés exemple
OriginalL'auteur Vadim Gremyachev
Lorsque vous êtes dans un contexte spécifique d'un site web, vous pouvez faire ce qui suit:
OriginalL'auteur Emaborsa