![](/img/trans.png)
[英]Azure AD Application - Require Role Assignment + Add a role assignment for an Application?
[英]Cannot add a role assignment with empty role definition binding collection
我試圖授予在SharePoint 2013中使用ClientContext的用戶權限。我所做的所有操作與Microsoft網站http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.client中的操作完全相同。 roledefinitionbindingcollection.add.aspx
但是最后,這部分代碼始終返回異常“無法添加具有空角色定義綁定集合的角色分配”:
RoleAssignment oRoleAssignment = w.RoleAssignments.Add(oUser, roleDefBinding);
clientContext.ExecuteQuery();
我搜索了網絡,發現與其他一些用戶類似的問題,但沒有任何答復。 有任何想法嗎?
我的代碼:
clientContext.Load(w.RoleDefinitions);
clientContext.ExecuteQuery();
var role = w.RoleDefinitions.Where(r => r.Name == roleName);
if (role.Count() > 0)
{
RoleDefinition roleMSP = role.First();
clientContext.Load(w.SiteUsers);
clientContext.ExecuteQuery();
var user = w.SiteUsers.Where(u=> u.LoginName == "c:0+.w|s-1-5-21-3493872076-3631449775-1555872641-1347");
if (user.Count() > 0)
{
// Create a new RoleDefinitionBindingCollection object.
RoleDefinitionBindingCollection roleDefBinding = new RoleDefinitionBindingCollection(clientContext);
roleDefBinding.Add(roleMSP);
User oUser = user.First() as User;
clientContext.Load(w.RoleAssignments);
clientContext.ExecuteQuery();
RoleAssignment oRoleAssignment = w.RoleAssignments.Add(oUser, roleDefBinding);
clientContext.ExecuteQuery();//Here I get an exception
}
}
解決! 刪除了以下代碼行:
clientContext.Load(w.RoleAssignments);
clientContext.ExecuteQuery();
看起來您不需要檢索分配列表,然后添加您的分配列表。
我的工作代碼:
RoleDefinitionCollection roleDefs = web.RoleDefinitions;
var query = projectCtx.LoadQuery(roleDefs.Where(p => p.RoleTypeKind == RoleType.Contributor));
projectCtx.ExecuteQuery();
RoleDefinition roledefObj = query.FirstOrDefault();
RoleDefinitionBindingCollection collRoleDefinitionBinding = new RoleDefinitionBindingCollection(projectCtx) { roledefObj };
var roleAssignments = web.RoleAssignments;
roleAssignments.Add(principalTest, collRoleDefinitionBinding);
projectCtx.ExecuteQuery();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.