使用客户端对象模型以编程方式添加的Sharepoint 2013用户无法为文档库做出贡献

时间:2012-12-03 04:30:00

标签: sharepoint permissions client-object-model

我对使用客户端对象模型以编程方式添加到Sharepoint 2013组的用户的用户权限存在问题。 Web应用程序允许匿名,但我还有一个文档库“教师文档”,仅对某个组(例如“教师”)具有贡献权限,并且我已将用户添加到站点的默认值也是会员(让我们说“学校成员”)。代码工作正常,用户已成功添加到两个组。

虽然它确实看起来不错并且用户名被列为组的成员,但他们仍然无法贡献。当我检查时,他们确实对文档库具有匿名访问权限,但没有Contribute权限。这是我的代码:

public static string AddUserToGroup(string siteURL, string groupName, string userName, string name, string email, NetworkCredential impersonateCredential)
{
    try
    {
        ClientContext context = new ClientContext(siteURL);
        context.Credentials = impersonateCredential;

        Group oGroup = null;

        oGroup = context.Web.SiteGroups.GetByName(groupName);

        context.Load(oGroup);
        bool groupExists = false;

        try
        {
            context.ExecuteQuery();
            groupExists = true;
        }
        catch { }

        if (groupExists)
        {
            UserCreationInformation userCreationInfo = new UserCreationInformation();
            userCreationInfo.Email = email;
            userCreationInfo.LoginName = userName;
            userCreationInfo.Title = name;

            bool userExists = false;

            try
            {
                User checkUser = oGroup.Users.GetByLoginName(userName);
                context.Load(checkUser);
                context.ExecuteQuery();
                userExists = true;
            }
            catch { }

            if (!userExists)
            {
                User oUser = oGroup.Users.Add(userCreationInfo);
                context.ExecuteQuery();
            }
        }
        else
        {
            return "No associated group assigned";
        }

        return "Member " + userName + " has been added to group.";
    }
    catch (Exception ex)
    {
        return ex.Message.ToString();
    }
}

以下是我的称呼方式:

string siteURL = "http://spfe01.gilang.com/";
string username = "spfe01\\budi.utomo";
string name = "Budi Utomo";
string email = "budi.utomo@spfe01.gilang.com";

NetworkCredential impersonateCredential = new NetworkCredential("username", "password", "spfe01");

AddUserToGroup(siteURL, "Teachers", username, name, email, impersonateCredential));

(您可以在控制台应用程序上测试它)

有效,用户被添加到“教师”,但没有“教师文档”文档库的权限。将用户添加到管理员组“学校所有者”并完全控制该站点也不起作用。

修改 在我的情况下,我已将组手动添加到文档库,手动添加到组的用户被授予权限并允许贡献。手动我的意思是在Web浏览器上使用Sharepoint的标准“权限”功能。

1 个答案:

答案 0 :(得分:0)

实际上,你是否破坏了遗产?

最有可能的是,文件夹和文件继承了主文件夹的权限

这是我的代码:

caml = new Microsoft.SharePoint.Client.CamlQuery();

caml.ViewXml = @"Caml to get the file";

items = objList.GetItems(caml);

clientContext.Load(items);

clientContext.Credentials = new NetworkCredential("LoginID", "LoginPW", "LoginDomain");

clientContext.ExecuteQuery();

item = items[0];

item.BreakRoleInheritance(true, true);

clientContext.ExecuteQuery();