Domanda

Voglio ottenere una voce di elenco che l'utente corrente non ha accesso a, ma ho bisogno di ottenere nel codice. Quando uso SPSecurity.RunWithElevatedPrivileges che non funziona.

E 'perché sto utilizzando l'oggetto Web del contesto attuale in pagina dell'applicazione.

Se voglio rendere il codice lavoro devo costruire un altro oggetto SPSite e SPWeb in RunWithElevatedPrivileges delegato, ma io non voglio farlo.

Come posso ottenere questo utilizzando il contesto nel Web corrente Application pagina?

È stato utile?

Soluzione

Dovete istanziare nuovo SPSite e SPWeb gli oggetti all'interno del vostro RunWithElevatedPrivileges () delegare utilizzando le proprietà di identificazione del SPSite del contesto attuale e oggetti SPWeb:

Guid siteId = SPContext.Current.Site.ID;
Guid webId = SPContext.Current.Web.ID;

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(siteId))
    {
        using (SPWeb web = site.OpenWeb(webId))
        {
            // Your code here
        }
    }
});

Si può sapere perché voi "non vuole" creare nuova SPSite e SPWeb oggetti del RunWithElevatedPrivileges) delegati (? Se si utilizza il modello di progettazione ho dimostrato sopra, non c'è bisogno di preoccuparsi di chiamare Dispose () sui nuovi oggetti che hai creato.

Altri suggerimenti

Grazie, che ci ha aiutato lot..saved un sacco di tempo. Grande risposta:)

SPSecurity.RunWithElevatedPrivileges:

"Un oggetto SPSite creata all'esterno il delegato può fare riferimento all'interno del delegato, tuttavia, i metodi e valutatori di proprietà della corsa oggetto con i privilegi del contesto utente in cui sono stati creati gli oggetti, non con i privilegi elevati."

In sostanza, si deve creare nuovi oggetti all'interno del delegato per eseguire con i diritti di controllo completo.

Si dovrebbe creare nuova SPSite all'interno dei SPSecurity.RunWithElevatedPrivileges bloccano utilizzando URL o il GUID.

Per informazioni approfondite sui SPSecurity.RunWithElevatedPrivileges e altre tecniche di rappresentazione, Check this out:

rappresentazione in SharePoint: Una Panoramica di Extreme

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top