在SP 2013中创建术语失败

时间:2015-05-18 06:47:08

标签: c# sharepoint sharepoint-2013 csom

我正在尝试在SP 2013术语集中创建一个术语。我能够从给定凭证的术语集中读取术语。

设定:

ServiceAccountLogonName用户是术语库管理员之一

代码:

        TreeView tv = new TreeView() { Dock = DockStyle.Fill };
        tv.Nodes.Add(new ElementTreeNode { Text = "Node 1" });
        tv.Nodes.Add(new ElementTreeNode { Text = "Node 2" });
        tv.MouseDown += (o, e) => {
            TreeNode n = tv.GetNodeAt(e.Location);
            tv.SelectedNode = n; // known bug, force selected node
            if (e.Button == MouseButtons.Right) {
                if (n is ElementTreeNode) {
                    var n2 = (ElementTreeNode) n;
                    n2.ElementContextMenu.Show(tv, e.Location);
                }
            }
        };

运行ExecuteQuery时出现错误消息:

无法读取或写入数据库。刷新然后再试一次。如果问题 坚持,请联系管理员。

凭据是否需要术语存储或术语集的任何特定权限?

我还缺少什么吗?

有用的教程: https://github.com/OfficeDev/TrainingContent/blob/master/O3656/O3656-8%20Developing%20advanced%20Taxonomy%20Scenarios%20in%20Office%20365/Lab.md

1 个答案:

答案 0 :(得分:0)

确保您的用户拥有期限存储的权限。 转到中央管理==>管理服务应用程序==>点击您的服务应用程序的行(而不是链接)==>选择“权限”功能区按钮并添加您的帐户。

同时确保您的术语集打开以进行术语创建。您可以检查termSet变量的“IsOpenForTermCreation”。

第三。在CreateTerm行中使用Guid.NewGuid()而不是新的Guid()。

有时间进行一些测试:

        foreach (var tagName in tagNames)
        {
            var newTerm = termSet.CreateTerm(tagName, Thread.CurrentThread.CurrentUICulture.LCID, Guid.NewGuid());
        }

        termStore.CommitAll();
        clientContext.Load(termStore);
        clientContext.ExecuteQuery();

在我将用户添加到服务应用程序权限后,这对我有用。