在 SP 2013 中创建术语失败
Creating term fails in SP 2013
我正在尝试在 SP 2013 术语集中创建一个术语。我能够使用给定的凭据从术语集中读取术语。
设置:
ServiceAccountLogonName 用户是术语库管理员之一
代码:
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 为 运行 时的错误消息:
无法读取或写入数据库。刷新并重试。如果问题
仍然存在,请联系管理员。
凭据是否需要对术语库或术语集的任何特定权限?
我还遗漏了什么吗?
确保您的用户有权访问术语库。
转到中央管理 ==> 管理服务应用程序 ==> 单击服务应用程序的行(不是 link) ==> 选择 "Permissions" 功能区按钮并添加您的帐户。
还要确保您的术语集已开放供术语创建。您可以检查 termSet 变量的 "IsOpenForTermCreation"。
第三。在 CreateTerm 行中使用 Guid.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();
在我将我的用户添加到服务应用程序权限后,这对我有用。
我正在尝试在 SP 2013 术语集中创建一个术语。我能够使用给定的凭据从术语集中读取术语。
设置:
ServiceAccountLogonName 用户是术语库管理员之一
代码:
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 为 运行 时的错误消息:
无法读取或写入数据库。刷新并重试。如果问题 仍然存在,请联系管理员。
凭据是否需要对术语库或术语集的任何特定权限?
我还遗漏了什么吗?
确保您的用户有权访问术语库。 转到中央管理 ==> 管理服务应用程序 ==> 单击服务应用程序的行(不是 link) ==> 选择 "Permissions" 功能区按钮并添加您的帐户。
还要确保您的术语集已开放供术语创建。您可以检查 termSet 变量的 "IsOpenForTermCreation"。
第三。在 CreateTerm 行中使用 Guid.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();
在我将我的用户添加到服务应用程序权限后,这对我有用。