Значение не попадает в ожидаемый диапазон - PullRequest
1 голос
/ 29 марта 2012

Я использую пространство имен Microsoft.Sharepoint.Client и пытаюсь указать ListItem RoleAssignment на основе групп, доступных в сети.

ClientContext clientContext = new ClientContext(deptUrl);
Web web = clientContext.Web;

RoleAssignmentCollection collGroup = clientContext.Web.RoleAssignments;
clientContext.Load(collGroup,
groups => groups.Include(
    group => group.Member
    ));

clientContext.ExecuteQuery();

List<RoleAssignment> assignments = new List<RoleAssignment>();

foreach (RoleAssignment oGroup in collGroup)
{
assignments.Add(oGroup);
}

Затем я получаю List по его названию, а затем ListItem на основе идентификатора, который у меня есть. List = = 1004 *

web.Lists.GetByTitle('Some List');     
SecurableObject oListItem = list.GetItemById(itemId);

Я вызываю BreakRoleInheritence для объекта oListItem

oListItem.BreakRoleInheritance(false, false);

Тогда этот код для установки разрешения:

var item = assignments.Where(x => x.Member.LoginName == groupName).SingleOrDefault();
oListItem.RoleAssignments.Add(item.Member, item.RoleDefinitionBindings);

Наконец:

clientContext.Load(list);
clientContext.ExecuteQuery();

Когда я запускаю код, я получаю следующую ошибку:

Microsoft.SharePoint.Client.ServerException was unhandled
  Message="Value does not fall within the expected range."
  Source="Microsoft.SharePoint.Client.Runtime"
  ServerErrorCode=-2147024809
  ServerErrorTypeName="System.ArgumentException"
  ServerStackTrace=""
  StackTrace:
       at Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(Stream responseStream)
       at Microsoft.SharePoint.Client.ClientRequest.ProcessResponse()
       at Microsoft.SharePoint.Client.ClientRequest.ExecuteQueryToServer(ChunkStringBuilder sb)
       at Microsoft.SharePoint.Client.ClientRequest.ExecuteQuery()
       at Microsoft.SharePoint.Client.ClientRuntimeContext.ExecuteQuery()
       at Microsoft.SharePoint.Client.ClientContext.ExecuteQuery()
       at DisplayOnCalendarUtility.Program.SetSecurity(Int32 caseType, Int32 itemId) in C:\Projects\DisplayOnCalendarUtility\DisplayOnCalendarUtility\Program.cs:line 131
       at DisplayOnCalendarUtility.Program.Main(String[] args) in C:\Projects\DisplayOnCalendarUtility\DisplayOnCalendarUtility\Program.cs:line 54
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 
...