2012-02-15 10 views
1

私は、ユーザープリンシパル名(UPN)形式を使用してデータベースに保存されたアカウントがあります。私は、SharePointで働いています[email protected]のSharePointのUserProfile

をUPN形式を使用して認証されたクレームです。

私の問題は、永続化された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アカウントをクレームに変換しなければなりません、もしそうなら、それを行う方法の例を誰かが持っていますか?

答えて

0

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

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

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ループであなたのフィールドをチェックし、perticularユーザーの詳細を取得することができます

関連する問題