sabato 25 dicembre 2010

Accedere agli oggetti SharePoint con i privilegi alzati

Alzare i privilegi di SharePoint da codice per poter eseguire delle operazioni altrimenti non consentite in forma anonima è possibile utilizzando il seguente codice C#:

SPSecurity.RunWithElevatedPrivileges(() =>
{
using (SPSite site = new SPSite(siteUrl))
{
using (SPWeb web = site.OpenWeb())
{
// Qui si possono usare gli oggetti site e web con i privilegi alzati
...
}
}
});


Se si vuole aprire il root web utilizzare invece questa istruzione:

using (SPWeb rootWeb = site.OpenWeb(site.RootWeb.ID))


Nell'esempio si è creato l'SPSite e si è aperto il SPWeb utilizzando l'istruzione using in modo da avere il dispose automatico una volta usciti dallo scope.

Il codice sopra usa una lambda expression (=>), se invece si desidera utilizzare il metodo standard la sintassi è la seguente:

SPSecurity.RunWithElevatedPrivileges(delegate()
// ....
});


non credo che ci siano sostanziali differenze tra i due metodi, è comunque consigliato farne l'abitudine visto che con SharePoint 2010 verranno utilizzate le espression lambda al posto delle query CAML per leggere dalle liste.

Per utilizzare il metodo lambda basta includere il seguente namespace:

Microsoft.SharePoint.Linq namespace