I'm using Managed Metadata Navigation and I'm trying to access it using CSOM. The problem I'm having is that I can't get the friendly URLs for the terms.
If I run this code using the Server Side Object Model, the call to NavigationTerm.GetWebRelativeFriendlyUrl() returns the web relative friendly URL as expected.
using (SPSite site = new SPSite("http://sp2013"))
{
SPWeb web = site.RootWeb;
NavigationTermSet navigationTermSet = TaxonomyNavigation.GetTermSetForWeb(web, "GlobalNavigationTaxonomyProvider", true);
foreach (NavigationTerm term in navigationTermSet.Terms)
{
Console.WriteLine(term.TaxonomyName + " - " + term.GetWebRelativeFriendlyUrl());
foreach (NavigationTerm childTerm in term.Terms)
{
Console.WriteLine(" -- " + childTerm.TaxonomyName + " - " + childTerm.GetWebRelativeFriendlyUrl());
}
}
}
If I run this code using Client Site Object Model, the call to NavigationTerm.GetWebRelativeFriendlyUrl() returns NULL.
using (ClientContext clientContext = new ClientContext("http://sp2013"))
{
NavigationTermSet navigationTermSet = TaxonomyNavigation.GetTermSetForWeb(clientContext, clientContext.Web, "GlobalNavigationTaxonomyProvider", true);
clientContext.Load(navigationTermSet, x => x.Terms);
clientContext.ExecuteQuery();
foreach (NavigationTerm term in navigationTermSet.Terms)
{
clientContext.Load(term, x => x.Terms);
clientContext.ExecuteQuery();
Console.WriteLine(term.TaxonomyName + " - " + term.GetWebRelativeFriendlyUrl().Value);
foreach (NavigationTerm childTerm in term.Terms)
{
clientContext.Load(childTerm, x => x.Terms);
clientContext.ExecuteQuery();
Console.WriteLine(" --- " + childTerm.TaxonomyName + " - " + childTerm.GetWebRelativeFriendlyUrl().Value);
}
}
}
Any ideas what is wrong with the CSOM code or how I can get the friendly urls for the terms?