【问题标题】:Add TermSetGroup in Sharepoint via Code通过代码在 Sharepoint 中添加 TermSetGroup
【发布时间】:2012-03-15 08:53:49
【问题描述】:

我在创建 TermSetGroup 时遇到了问题。我的代码如下所示:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    //create new group if the groupName was not created.            
    Group group = termStore.Groups.Where(g => g.Name == groupName).Count() > 0 ? termStore.Groups[groupName] : termStore.CreateGroup(groupName);
    //create new term set if the termSetName was not created.
    TermSet termSet = group.TermSets.Where(s => s.Name == termSetName).Count() > 0 ? group.TermSets[termSetName] : group.CreateTermSet(termSetName);

    termSet.Owner = TermSetOwner;

    //add terms to term set.
    int lcid = CultureInfo.CurrentCulture.LCID;
    foreach (string termName in terms)
    {
        if (termSet.GetTerms(termName, false).Count <= 0)
        {
            termSet.CreateTerm(termName, lcid);
        }
    }
    termStore.CommitAll();
});

如果我在单独的控制台项目中使用此代码,它实际上可以工作。它创建了我的组,并且在这个组中还创建了 TermSet。但是当我在工作流中调用的 web 服务中使用此代码时,它告诉我,我的用户没有创建组的权限。 当组存在时,它可以工作,并且可以创建 TermSet。

当我使用“RunWithElevatedPrivileges”时,怎么会这样? 启动工作流的用户是站点管理员。甚至 Termstore 管理员也是站点管理员......所以我在这里做错了什么?

【问题讨论】:

    标签: c# sharepoint permissions


    【解决方案1】:

    问题是,您的网络服务以什么身份运行? 因为这是将被假定的身份。只要您使用 SPSecurity.RunWithElevatedPrivileges 运行与 IIS 工作进程 (w3wp) 不同的进程,就不会授予您系统帐户身份。

    编辑:

    SPSecurity.RunWithElevatedPrivileges(delegate() { 
    using(SPSite elevatedSite = new SPSite(YOUR_SITEID))
    {
        var elevatedTSession = new TaxonomySession(SPContext.Current.Site);
        var elevatedTermstore = elevatedTSession.TermStores[0]; //Or other if you have more
        //your code here, but using elevatedTermstore instead
    }
    

    【讨论】:

    • 网络服务以站点管理员身​​份运行,即使我使用另一个管理员帐户通过 UserToken 执行此操作,它仍然无法正常工作。
    • 也许您需要从提升的子句中获取对术语库和 TaxonomySession 的引用?请参阅我编辑的答案。
    • 嗯..真的很奇怪。恐怕我没主意了.. :(
    • 嗯,我现在已经手动完成了。不过我会保持这个问题的开放性,也许我的同事可以在他假期回来后找到解决方案......
    • 好的,如果你们弄清楚了,我很想知道出了什么问题。
    猜你喜欢
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 2014-02-13
    相关资源
    最近更新 更多