Off to a new project and today I’m exploring the SharePoint Managed Metadata and Taxonomy APIs. I had created a simple Windows Form application to test with and as I was trying to read some of terms out of the Managed Metadata Service Application, I came across a weird error that took me a while to figure out.
Code Snippet:
using (SPSite site = new SPSite(siteURL))
{
TaxonomySession session = new TaxonomySession(site);
TermStore termStore = session.TermStores["Managed Metadata Service"];
TermCollection terms = termStore.GetTerms(InputTerm.Text, true);
foreach (Term term in terms)
{
Results.Text += term.Name + "\n";
if (term.Terms.Count > 0)
{
foreach(Term childTerm in term.Terms)
{
Results.Text += childTerm.Name;
}
}
}
}
Error Message:
ArgumentOutOfrangeException was unhandled. Specified argument was out of the range of valid values. Parameter name: index.
Cause:
Digging through the properties of the session object showed that it was null so for some reason I wasn’t even able to get a handle on a TaxonomySession object, which is the entry point to getting access to any of the information inside of your Managed Metadata Service. When cross-referenced with the Event Viewer, I see this message:
Event ID: 8089 Source: SharePoint Server Task Category: Taxonomy Level: Warning The Managed Metadata Service 'Managed Metadata Service' is inaccessible. The web application does not have sufficient permissions.
Solution:
Since I was running Visual Studio and my test Windows Form application as myself (a user), I went to Central Administration to find out whether or not I had access to the service.
Lo and behold, it looks like only service accounts had access to the Managed Metadata Service. After I added my account to have at least Read Access to the Term Store, all was well and I was on my merry way again. 🙂




I see you have ADFS Provider, does it work good?
very helpful! i must say! keep sharing good stuff! i myself work in providing SharePoint Solutions. visit us http://www.dshift.com. Share the knowledge.
Richard