1

ユーザー プリンシパル名 (UPN) 形式を使用してデータベースに保持されているアカウントがあります: jdoe@domain.gobalx.com

UPN 形式を使用して認証されたクレームである SharePoint 環境で作業しています。

私の問題は、永続化された UPN アカウントの UserProfile オブジェクトを取得する必要があることです。次のことを試しましたが、うまくいきません。

string upnAccount = "jdoe@domain.globalx.com";
SPServiceContext ctx = SPServiceContext.GetContext(SPContext.Current.Site);
UserProfileManager upm = new UserProfileManager(ctx);
UserProfile user = upm.GetUserProfile(upnAccount);

Microsoft.Office.Server.UserProfiles.UserNotFoundException: ユーザー プロファイルの取得中にエラーが発生しました

これは、UPN アカウントを請求に変換する必要があることを意味しますか? もしそうなら、それを行う方法の例はありますか?

4

2 に答える 2

1
            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;
                    }
                }
            }

Uは、すべてのユーザープロファイルを取得するためにこれを試すことができます. foreach ループでは、フィールドを確認し、特定のユーザーの詳細を取得できます

于 2012-02-16T12:43:57.107 に答える
0

場合によっては、フェデレーション認証を使用する SharePoint サイトでは、同期をセットアップしない限り、ユーザー プロファイルが自動的に作成されません。この問題については、Central Admin を介して jdoe@domain.globalx.com のユーザー プロファイルが既に存在するかどうかを確認できます。

また、コードは偽装で実行する必要があります。ログで例外を確認し、SPSecurity.RunWithElevatedPrivileges を使用してみてください。

于 2012-02-16T09:26:14.647 に答える