РЕДАКТИРОВАТЬ
Один из возможных способов проверить, существует ли пользователь, без выдачи ошибки или создания нового пользователя (как результат метода web.EnsureUser(@"domain\username")
), заключается в загрузкеполная коллекция пользователей локально и использование оператора LINQ для поиска пользователя по Id.
Например:
UserCollection collUser = ctx.Web.SiteUsers;
ctx.Load(collUser);
ctx.ExecuteQuery();
var user = collUser.Cast<User>().FirstOrDefault(u => u.Id == 1);
if (null != user)
{
Console.WriteLine("User: {0} Login name: {1} Email: {2}",
user.Title, user.LoginName, user.Email);
}
Если есть запись с идентификатором == 1, она будет возвращена, если нет, возвращаемое значение будет нулевым.
В зависимости от количества пользователей на сайте, это может вызывать проблемы с производительностью, однако, исходя из числа исключений, которые вы ожидаете сгенерировать при проверке идентификатора пользователя, это решение может оказаться целесообразным.
Ссылка: Csom или отдых для проверки пользователя