我试图在SP 2013术语集中创建一个术语。我能够从具有给定凭据的术语集中读取术语。
设置:
ServiceAccountLogonName用户是Term Store管理员之一
代码:var siteUrl = ConfigHelper.GetValue("SharepointSiteUrl");
var clientContext = new ClientContext(siteUrl);
clientContext.Credentials = new NetworkCredential(ConfigHelper.GetValue("ServiceAccountLogonName"), ConfigHelper.GetValue("ServiceAccountPassword"));
var taxonomySession = TaxonomySession.GetTaxonomySession(clientContext);
var termStore = taxonomySession.TermStores.GetById(new Guid("dae0745c07ae40d6bf4b6c52e3172d6a"));
var termSet = termStore.GetTermSet(new Guid("f40eeb54-7c87-409d-96c7-75ceed6bff60"));
foreach (var tagName in tagNames)
{
var newTerm = termSet.CreateTerm(tagName, Thread.CurrentThread.CurrentUICulture.LCID, Guid.NewGuid());
newTerm.CreateLabel(tagName, Thread.CurrentThread.CurrentUICulture.LCID, true);
termStore.CommitAll();
clientContext.Load(newTerm);
clientContext.ExecuteQuery();
}
执行ExecuteQuery时报错:
读取或写入数据库失败。刷新后重试。如果有问题仍然存在,请联系管理员
凭据是否需要术语存储或术语集上的任何特定权限?
这里还有什么我遗漏的吗?
有用的教程:https://github.com/officedev/trainingcontent/blob/master/o3656/o3656 - 8% - 20 developing%20advanced%20taxonomy%20scenarios%20in%20office%20365/lab.md
确保您的用户具有术语存储的权限。转到中央管理==>管理服务应用程序==>点击您的服务应用程序的联机(不是链接)==>选择"权限"ribbon按钮并添加您的帐户。
还要确保打开术语集列表以创建术语。你可以检查你的termSet变量的"IsOpenForTermCreation"
第三。在CreateTerm行中使用guide . newguid()代替new Guid()。
有时间做一些测试:
foreach (var tagName in tagNames)
{
var newTerm = termSet.CreateTerm(tagName, Thread.CurrentThread.CurrentUICulture.LCID, Guid.NewGuid());
}
termStore.CommitAll();
clientContext.Load(termStore);
clientContext.ExecuteQuery();
在我将用户添加到服务应用程序权限后,这对我很有效。