声明环境中用户主体名称的 SharePoint UserProfile

发布于 2025-01-05 22:54:36 字数 809 浏览 0 评论 0原文

我有一个使用用户主体名称 (UPN) 格式保留在数据库中的帐户: [电子邮件受保护]

我是在使用 UPN 格式对声明进行身份验证的 SharePoint 环境中工作。

我的问题是我需要获取持久 UPN 帐户的 UserProfile 对象。我已尝试以下操作,但不起作用:

string upnAccount = "[email protected]";
SPServiceContext ctx = SPServiceContext.GetContext(SPContext.Current.Site);
UserProfileManager upm = new UserProfileManager(ctx);
UserProfile user = upm.GetUserProfile(upnAccount);

我不断收到: Microsoft.Office.Server.UserProfiles.UserNotFoundException:检索用户配置文件时遇到错误

这是否意味着我必须将 UPN 帐户转换为声明,如果是的话,有人有一个关于如何做到这一点的例子吗?

I have an account that has been persisted in a database using the User Principal Name (UPN) format: [email protected]

I am working in a SharePoint environment that is Claims authenticated using the UPN format.

My problem is I need to get a UserProfile object for the persisted UPN account. I have tried the following but it doesn't work:

string upnAccount = "[email protected]";
SPServiceContext ctx = SPServiceContext.GetContext(SPContext.Current.Site);
UserProfileManager upm = new UserProfileManager(ctx);
UserProfile user = upm.GetUserProfile(upnAccount);

I keep getting: Microsoft.Office.Server.UserProfiles.UserNotFoundException: An error was encountered while retrieving the user profile

Does this mean that I have to convert the UPN account into a claim, and if so does anyone have an example on how to do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一花一树开 2025-01-12 22:54:36
            UserProfileManager UPM = null;

            using (SPSite site = new SPSite(SPContext.Current.Web.Url))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    ServerContext serverContext = ServerContext.GetContext(site);
                    UPM = new UserProfileManager(serverContext);
                     foreach (UserProfile profile in UPM)
                    {
                        
                        an = profile["AccountName"].Value;
                        title = profile["Title"].Value;
                    }
                }
            }

您可以尝试此方法来获取所有用户配置文件。在 foreach 循环中,您可以检查字段并获取特定用户的详细信息。

            UserProfileManager UPM = null;

            using (SPSite site = new SPSite(SPContext.Current.Web.Url))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    ServerContext serverContext = ServerContext.GetContext(site);
                    UPM = new UserProfileManager(serverContext);
                     foreach (UserProfile profile in UPM)
                    {
                        
                        an = profile["AccountName"].Value;
                        title = profile["Title"].Value;
                    }
                }
            }

You can try this for get all userprofile. In foreach loop, you can check for your fields and get particular user details.

温柔戏命师 2025-01-12 22:54:36

在某些情况下,在具有联合身份验证的 SharePoint 网站下,除非您未设置同步,否则不会自动创建用户配置文件。对于此问题,您可以检查[email protected] 通过中央管理。

此外,您的代码必须在模拟下运行,检查日志是否有异常并尝试使用 SPSecurity.RunWithElevatedPrivileges。

In some cases under SharePoint sites with federated authentication there are no user profiles automatically created until you haven't setup synchronization. For this issue you may check if there already exists user profile for [email protected] via Central Admin.

Also your code must be run under impersonation, check the log for exception and try to use SPSecurity.RunWithElevatedPrivileges.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文