我想编写一个C#应用程序来克隆SharePoint MOSS2007角色组(及其权限),但是没有起点。
MOSS2007似乎没有充分记录(在开发方面),尽管谷歌搜索问题相当广泛仍然不知道该怎么开始尝试。我希望这里有人做过类似的事情和/或知道SharePoint库足以提供一个很好的参考点。
我真诚地为基本问题道歉并且也没有提供更多信息 - 如果我还有其他任何我愿意的话!
答案 0 :(得分:4)
当“克隆”SharePoint安全组时,首先不是关于组本身,而是关于权限。
这些权限作为角色分配存储到SPWeb对象。首先,您必须找到要克隆的组:
SPGroup group = spWeb.Groups["name group"];
然后,您必须使用此检索到的组来获取SPWeb对象上的角色分配。
SPRoleAssignment ass = spWeb.RoleAssignments.GetAssignmentByPrincipal(group2);
然后,您必须简单地创建一个新的SPGroup,并将该组添加到角色分配和角色分配到Web对象:
spWeb.SiteGroups.Add(groupName, user, user, groupDescription);
SPGroup newGroup = spWeb.SiteGroups[groupName];
SPRoleAssignment roleAssignment = new SPRoleAssignment(newGroup);
//add role to web
spWeb.RoleAssignments.Add(roleAssignment);
spWeb.Update();
在此之后,您应该拥有一个与原始组具有相同权限的新组。
如果您没有在sharepoint功能中执行上述操作,则可以从控制台应用程序执行此操作。只需在VS中创建一个控制台应用程序,并用以下内容填充:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
using (SPSite spSite = new SPSite("http://yoururl"))
{
using (SPWeb spWeb = spSite.RootWeb)
{
//perform the code to clone the group here
}
}
}
}
}
答案 1 :(得分:1)
如果要远程编辑,更改或添加组,您确实可以使用Web服务。您需要的webservice是usergroup.asmx。您只需在SharePoint中调用它即可找到此Web服务的方法。
所以浏览:http://MySharePointSite/_vti_bin/usergroup.asmx
这将为您提供服务的所有可用方法的列表。从应用程序连接到Web服务可以通过以下方式完成:
http://msdn.microsoft.com/en-us/library/ms458094.aspx
这告诉您如何与用户组webservice进行交互: