Sharepoint UserProfileManager 没有管理用户配置文件权限

2024-02-17

我有一个让我有点抓狂的问题:使用 UserProfileManager 作为未经授权的用户。

问题:用户没有“管理用户配置文件”权限,但我仍然想使用 UserProfileManager。使用 SPSecurity.RunWithElevatedPrivileges 的想法似乎不起作用,因为 UserProfileManager 似乎对 SSP 进行了授权。

            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPSite site = new SPSite(inputWeb.Site.ID))
                {
                    ServerContext ctx = ServerContext.GetContext(site);
                    UserProfileManager upm = new UserProfileManager(ctx,true);
                    UserProfile u = upm.GetUserProfile(userLogin);
                    DepartmentName = u["Department"].Value as string;
                }
            });

这在“new UserProfileManager”行上仍然失败,并出现“您必须具有管理用户配置文件管理员权限才能使用管理员模式”异常。

就我用户而言,RunWithElevatedPrivileges 恢复为 AppPool 身份。 WindowsIdentity.GetCurrent().Name 返回“NT AUTHORITY\network service”,并且我已授予该帐户“管理用户配置文件”权限 - 没有运气。

site.RootWeb.CurrentUser.LoginName 返回在 RunWithElevatedPrivileges 中创建的站点的 SHAREPOINT\system,该站点不是有效的 Windows 帐户。

有没有办法做到这一点?我不想授予所有用户“管理用户配置文件”权限,但我只想从用户配置文件(部门、国家/地区、直接报告)中获取一些数据。有任何想法吗?


需要设置的权限实际上是在共享服务提供者中找到的。

  1. 导航至中央管理
  2. 导航至共享服务提供商
  3. Under 用户个人资料和我的网站导航至个性化服务权限。
  4. 如果该帐户尚不存在,请添加运行您的网站应用程序域的帐户。
  5. 授予该用户管理用户个人资料允许。

我注意到您正在网络服务帐户下运行应用程序池。我在我的网站上实现了相同的功能;但是,应用程序池托管在 Windows 帐户下。然而,我不确定为什么这会产生影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sharepoint UserProfileManager 没有管理用户配置文件权限 的相关文章

随机推荐