Buenas a todos
Tengo un webService con el que creo dentro de un sitio en sharepoint una estructura de carpetas en las que los usuario va a poder cargar documentos.
Lo normal es que estas carpetas hereden los permisos, pero hay otras en las que los permisos se los tengo que poner yo con programación.
Con el codigo de abajo creo la estructura de las carpetas y le doy los permisos.
Código:
For Each itemFolder As SPListItem In miLista.Folders
tmp = itemFolder.Url.ToString
tmp = tmp.Replace(miLista.RootFolder.Name, miLista.Title + "/" + dato)
folderDestino = miWebDestino.Folders.Add(tmp)
If Not folderDestino.Item.HasUniqueRoleAssignments Then
folderDestino.Item.BreakRoleInheritance(True)
End If
UserCollection = miWebDestino.SiteUsers
User = UserCollection("dominio\usuario")
roleDef = miWebDestino.RoleDefinitions.GetByType(SPRoleType.Administrator)
roleAsig = New SPRoleAssignment(User)
roleAsig.RoleDefinitionBindings.Add(roleDef)
folderDestino.Item.RoleAssignments.Add(roleAsig)
folderDestino.Update()
Next
El problema es que la primera vez, cuando se crean todas las carpetas cuando llega al punto
folderDestino.Item.RoleAssignments.Add(roleAsig), da el siguiente error
"La validación de seguridad de esta página no es correcta. Haga clic en Atrás en el explorador Web, actualice la página y vuelva a intentar la operación.".
Despues en la siguiente ejecución, como ya estan creadas las carpetas, mete bien los permisos.
No entiendo porque funciona shareoint de esta manera, pero parece que hasta que no acaba la ejecucion no valida las carpetas que he metido y por eso no puede meter los permisos.
Si alguien sabe como arreglar esto, o le ha pasado alguna vez, contarme algo.
Un saludo.