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:
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.".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
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.