2010-08-25 3 views
1

J'essaie de récupérer un utilisateur dans SharePoint Client OM à l'aide de EnsureUser. Mon code est le suivant:EnsureUser ne retourne pas l'utilisateur valide

ClientContext clientContext = new ClientContext(siteUrl); 
User spUser = clientContext.Web.EnsureUser(user); 

Lorsque siteUrl et l'utilisateur sont tous deux définis comme appropriés.

Le résultat est SPUser est la coquille d'un objet utilisateur, mais toutes ses propriétés (par exemple courrier électronique, titre, etc.) ne sont pas initialisé. Dans VS, ils montrent {"La propriété ou le champ n'a pas été initialisé, il n'a pas été demandé ou la demande n'a pas été exécutée, il peut être explicitement demandé."}

Qu'est-ce qui causerait cela? Je pensais que EnsureUser créerait l'utilisateur s'il n'est pas déjà là. Je sais que dans le serveur OM, vous devez parfois utiliser "AllowUnsafeUpdates", y a-t-il quelque chose comme ça pour Client OM?

+0

Avez-vous eu l'intention d'utiliser 'clientContext.Web.EnsureUser (user)'? – kbrimington

+0

Ouais c'était juste une erreur de copie, je voulais utiliser clientContext.Web.EnsureUser – cmptrer

Répondre

6

Il est presque un an de retard, mais juste au cas où quelqu'un d'autre est à la recherche de la même réponse. Après avoir obtenu une référence à l'objet utilisateur, vous devez effectuer les opérations suivantes avant d'accéder aux propriétés de l'utilisateur.

clientContext.Load(spUser); 
clientContext.ExecuteQuery(); 

ou si vous souhaitez obtenir l'e-mail et le titre uniquement pour réduire la charge utile. Fondamentalement, il établit une requête au site Web SharePoint et demande les propriétés du spUser. La demande sera envoyée lorsque ExecuteQuery() est appelée.

+0

merci d'avoir pris le temps de répondre, cela m'a certainement aidé :) –

Questions connexes