Dans le développement d'un formulaire Infopath (et plus particulièrement lorsque vous développez un fomulaire Infopath Form Services, vous êtes amené à aller chercher des informations sur Sharepoint.
Parfois, les utilisateurs n'ont pas le droit d'y accéder et vous devez passer par l'impersonnation en utilisant la méthode dîtes du RunWithElevatedPrivileges...
Celle-ci peut-être rapidement un casse-tête si elle est mal utilisée.
Elle doit se présenter de la façon suivante:
Guid webGuid = SPContext.Current.Web.ID;
Guid siteGuid = SPContext.Current.Site.ID;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// Context du site dans le RunWithElevatedPrivileges
using (SPSite site = new SPSite(siteGuid))
{
// Context du webdans le RunWithElevatedPrivileges
using (SPWeb web = site.OpenWeb(webGuid))
{
// ...
}
}
});
Attention à bien récupérer les GUID avan pour les utiliser ensuite dans le delegate.
En effet si l'on utilise par exemple "SPWeb web = SPContext.Current.Web;", l'impersonnation ne fonctionnera pas puisque l'on récupérera le contexte de l'utilisateur.
Ce code est donc à manipuler avec la plus grande attention.
Notez qu'il n'est pas necessaire d'utiliser un site.Dispose() ou web.Dispose() de par l'utilisation des instructions using...
Aucun commentaire:
Enregistrer un commentaire