jeudi 13 mai 2010

MOSS 2007 - RunWithElevatedPrivileges dans les event handler

La méthode RunWithElevatedPrivileges est l’ami du développeur SharePoint. Elle permet de nous attribuer des droits là où l’utilisateur courant n’en dispose pas. De l’impersonification classique.


Dans les webparts tout va bien. Par contre, dans les event handler, dans certains cas, il est possible d’avoir l’erreur suivante : « […] threw an exception of type 'System.UnauthorizedAccessException’ »

En effet, il est obligatoire de créer les objets dans un SPSite car les objets créés en dehors n’auront pas le droit “Full control”, même si ils sont dans un délégué. Le plus simple est de combiner l’utilisation du mot « using » et des « properties » de l’event handler à l’intérieur de l’impersonification.

Voir l’exemple si dessous :

using (SPSite theSite = new SPSite(properties.OpenWeb().Site.ID)) {...}


Source : Dernier paragraphe de http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx
(Et oui c’est pour ça que l’erreur est fréquente…), et les commentaires du post suivant : http://www.sharepoint-tips.com/2007/03/event-handler-impersonation-continued.html

Aucun commentaire:

Enregistrer un commentaire