Guid termSetGUID = new Guid("7ab9e8b0-e1e1-4a7c-9b20-d6c5030103df");
string siteUrl = "http://win-f33ohjutmmi/sites/cms";
ClientContext clientContext = new ClientContext(siteUrl);
TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(clientContext);
taxonomySession.UpdateCache();
clientContext.Load(taxonomySession, ts => ts.TermStores);
clientContext.ExecuteQuery();
if (taxonomySession.TermStores.Count == 0)
throw new InvalidOperationException("The Taxonomy Service is offline or missing");
TermStore termStore = taxonomySession.TermStores[0];
clientContext.Load(termStore,
ts => ts.Name,
ts => ts.WorkingLanguage);
clientContext.ExecuteQuery();
// Does the TermSet object already exist?
TermSet existingTermSet;
TermGroup siteCollectionGroup;
siteCollectionGroup = termStore.GetSiteCollectionGroup(clientContext.Site,createIfMissing: true);
existingTermSet = termStore.GetTermSet(termSetGUID);
clientContext.Load(existingTermSet);
clientContext.ExecuteQuery();
if (!existingTermSet.ServerObjectIsNull.Value)
{
existingTermSet.DeleteObject();
termStore.CommitAll();
clientContext.ExecuteQuery();
}
TermSet termSet = siteCollectionGroup.CreateTermSet("CMSNavigationTermSet", termSetGUID,termStore.WorkingLanguage);
termStore.CommitAll();
clientContext.ExecuteQuery();
NavigationTermSet navTermSet = NavigationTermSet.GetAsResolvedByWeb(clientContext,termSet, clientContext.Web, "GlobalNavigationTaxonomyProvider");
navTermSet.IsNavigationTermSet = true;
termStore.CommitAll();
clientContext.ExecuteQuery();//THIS line always throw exception "The object is in invalid state"
大多数代码运行良好,创建了 TermSet,但是当我尝试将此 TermSet 作为导航 TermSet 时,最后一个 ExecuteQuery 抛出异常。