0

Dans un composant Webpart, un utilisateur sans privilèges doit lire et mettre à jour une liste Sharepoint.Mettre à jour la liste des points de partage avec des privilèges élevés

Les privilèges d'élévation fonctionnent correctement pour la lecture de la liste, mais lorsque j'essaie de mettre à jour la même liste, une exception est générée. Comment est-il possible de mettre à jour une liste avec des privilèges élevés?

SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 

SPSite oSite = SPControl.GetContextSite(HttpContext.Current); 
SPWeb oWeb = oSite.OpenWeb(); 
oWeb.AllowUnsafeUpdates = true; 
SPListItemCollection listItems = oWeb.Lists["nameList"].Items; 
SPListItem item = listItems.Add(); 

... 

item.Update(); // Throws Exception 
}); 
+0

L'exception envoie le message que "ne peut pas atteindre la trace causée par hors contexte". –

+0

Je suggère d'utiliser en utilisant le code correct, vous ne devriez pas laisser les objets spsite et spweb non disposés. si vous ne l'obtenez pas directement à partir de spcontext ou de la façon dont vous avez écrit dans le code au-dessus du code correct –

+0

Fondamentalement, un doublon. Consultez ceci pour la réponse: http://stackoverflow.com/questions/6043312/sharepoint-query-with-elevated-privileges – trgraglia

Répondre

0

Le problème a été la création du SPSite.

Le code correct:

SPSite oSite = new SPSite(SPContext.Current.Site.ID); 
SPWeb oWeb = oSite.OpenWeb(SPContext.Current.Web.ID);         
listItems = oWeb.Lists["nameList"]; 
1

privilages élevé est utilisé pour ajouter modifier et supprimer toutes les opérations si Thier doit être un autre problème Veuillez fournir les détails de l'exception

+0

Oui, était vrai. Cela a été causé par la création du SPSite. –

+0

Dans ce cas, vous devez créer une nouvelle instance de spsite et spweb et vous n'avez pas besoin de consommer un objet de site à partir de SPControl.GetContextSite (HttpContext.Current) –

Questions connexes