EnsureUser 在 SharePoint 客户端对象模型中使用电子邮件地址

EnsureUser using email address in SharePoint client object model

我需要更新 Sharepoint 2013 中的 FieldUserValue 字段。我只获得了电子邮件地址数据。我不能使用 EnsureUser,因为它只接受登录名。我使用了 FromUser 方法,但它给了我一个错误 "the user does not exist or is not unique"

FieldUserValue user = FieldUserValue.FromUser(email);

当我尝试使用我的电子邮件地址时它起作用了,但是当我在我的数据中使用电子邮件地址时它会导致错误。我该如何解决这个问题?

您可以使用 Utility.ResolvePrincipal method 通过电子邮件地址解析用户,例如:

var result = Microsoft.SharePoint.Client.Utilities.Utility.ResolvePrincipal(ctx, ctx.Web, emailAddress,Microsoft.SharePoint.Client.Utilities.PrincipalType.User,Microsoft.SharePoint.Client.Utilities.PrincipalSource.All, null, true);
ctx.ExecuteQuery();
if (result != null)
{
    var user = ctx.Web.EnsureUser(result.Value.LoginName);
    ctx.Load(user);
    ctx.ExecuteQuery();    
} 

参考资料

Get user identity and properties in SharePoint 2013