You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法找到PeopleManager且SiteUserInfoList未返回全部用户求助

问题解答

一、找不到PeopleManager类型的原因及解决办法

你遇到的CS0246错误,核心原因是缺少必要的程序集引用和命名空间导入:

  • PeopleManager类属于Microsoft.SharePoint.Client.UserProfiles命名空间,这个类并不包含在你当前引用的Microsoft.SharePoint.Client.dll和Microsoft.SharePoint.Client.Runtime.dll里。
  • 你需要额外引用Microsoft.SharePoint.Client.UserProfiles.dll程序集,并且在代码顶部添加命名空间导入:
    using Microsoft.SharePoint.Client.UserProfiles;
    
  • 注意要确保Microsoft.SharePoint.Client.UserProfiles.dll的版本和你当前使用的Client、Runtime版本保持一致(对应V4.0.30319的.NET Framework版本),避免版本不兼容问题。

二、通过SiteUserInfoList获取用户存在缺失的原因及替代方案

为什么会有用户缺失?

SiteUserInfoList是当前站点的用户信息列表,它只存储已经与该站点产生关联的用户——比如被分配了站点权限、直接添加到站点用户集合、或者曾经访问过该站点的用户。租户中未与该站点关联的用户(比如新创建的用户、仅在其他站点活跃的用户)不会出现在这个列表里,这就是你遇到部分用户缺失的原因。

解决办法

根据你的需求选择不同的方案:

  1. 获取当前站点的所有用户
    直接使用Web.SiteUsers集合,它包含所有被添加到当前站点的用户,比通过列表查询更可靠:

    var web = clientContext.Web;
    clientContext.Load(web.SiteUsers, users => users.Include(
        u => u.Id,
        u => u.Title,
        u => u.LoginName,
        u => u.Email
    ));
    clientContext.ExecuteQuery();
    
    foreach (var user in web.SiteUsers)
    {
        // 处理用户数据
    }
    
  2. 获取整个租户的用户(需权限)
    如果需要获取租户内的所有用户,在解决了PeopleManager的引用问题后,可以使用用户配置文件API:

    var peopleManager = new PeopleManager(clientContext);
    // 获取所有用户的个人资料(示例:如需批量可结合租户级API扩展)
    var myProfile = peopleManager.GetMyProperties();
    clientContext.Load(myProfile);
    clientContext.ExecuteQuery();
    

    注:批量获取租户用户可能需要更高的权限,也可以结合UserProfileManager类实现(同样需要引用UserProfiles程序集)。

内容的提问来源于stack exchange,提问作者Bassie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:52:44