2015年5月31日 (日)

[SP2013] ユーザープロファイル プロパティの操作時のエラー対応

SharePoint API を使って次のように、ProfilePropertyManager オフジェクトを取得しようとする際に、例外が発生することがあります。下記例は C# で記述していますが、そのほかに Windows PowerShell を使用する場合にも該当します。


...
  using (SPSite site = new SPSite(url)) {
                //ランタイムサービスのコンテキストの取得
                SPServiceContext context = SPServiceContext.GetContext(site);

                try
                {
                    ProfilePropertyManager profilePropManager =
                        new UserProfileConfigManager(context).ProfilePropertyManager;
...

エラーの内容は次の通りです。

2015-05-29 2-42-05

"UserProfileApplicationNotAvailableException_Logging::
UserProfileApplicationProxy.ApplicationProperits ProfilePropertyCache
does not have {GUID}

これは、ユーザー プロファイル サービス アプリケーション上でコードを実行するアカウントに適切な権限が付与されていないことが原因であるようです。たとえば、私の環境では次のようになっています。

[確認手順]

  1. サーバー全体管理サイトにアクセスする。
  2. サービス アプリケーションの管理ページにアクセスする。
  3. ユーザー プロファイル サービス アプリケーションを選択し、[権限]をクリックする。
    2015-05-31 17-18-49

 コード実行アカウントは contoso\administrator なのですが、ファームアカウントとサービスアプリケーション用のアカウントの2につのみフル コントロール権限が付与されている状態です。

2015-05-31 17-20-34

ここに contoso\administrator アカウントを追加し、フル コントロール権限を付与します。

2015-05-31 17-21-37

以上で問題が解決するはずです。

コメント