1

SharePoint 2013 サーバー内に展開されたカスタム WCF Web サービスを使用して、SharePoint 2013 で新しい用語セットを作成しようとしています。用語セットを作成するコードを以下に記述しました。

SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (Impersonator imp = new Impersonator("Username", "Domain", "Password"))
                {
                    using (SPSite site = new SPSite("http://server:8002/sites/site/"))
                    {
                        site.AllowUnsafeUpdates = true;
                        TaxonomySession session = new TaxonomySession(site);
                        TermStore termStore = session.TermStores["Managed Metadata Service"];
                        var termStoreAdmin = termStore.TermStoreAdministrators.Where(obj => obj.PrincipalName.Contains("domain\\username")).FirstOrDefault();

                        if (termStoreAdmin == null)
                            termStore.AddTermStoreAdministrator("domain\\username");

                        Group group = termStore.GetGroup(new Guid(groupGuid));
                        if (group != null && !string.IsNullOrEmpty(termSetName))
                        {
                            TermSet termset = group.TermSets.FirstOrDefault(obj => obj.Name.Equals(termSetName));
                            if (termset == null)
                            {
                                termset = group.CreateTermSet(termSetName);
                                termSetGuid = termset.Id.ToString();
                            }
                            SetupNavTermSet(termset, session, site.OpenWeb());
                        }
                        termStore.CommitAll();
                    }
                }
            });

SOAP メッセージを使用して Silverlight コードからこのメソッドを呼び出しています。このコードを呼び出すと、group.CreateTermSet(termSetName);行の実行中に例外が発生します。

エラーは次のとおりです。

Error Message :  Value cannot be null.
Source        : Microsoft.SharePoint
Error Details :     at Microsoft.SharePoint.Administration.Claims.SPClaimProviderManager.GetUserIdentifierEncodedClaim(IIdentity identity)
   at Microsoft.SharePoint.Taxonomy.Internal.CommonUtilities.GetCurrentUserName()
   at Microsoft.SharePoint.Taxonomy.TaxonomySession.get_CurrentUserName()
   at Microsoft.SharePoint.Taxonomy.Group.CreateTermSet(String name, Guid newTermSetId, Int32 lcid)
   at Microsoft.SharePoint.Taxonomy.Group.CreateTermSet(String name)
   at SplitVisionMetadataManagement.CustomManageMetaDataWCFService.<>c__DisplayClassc.<CreateTaxonomyTermSet>b__8()

誰かがこの問題と解決策を持っていますか?

4

1 に答える 1