Domanda

Voglio disabilitare l'elenco di blocco attraverso il codice in modo da aver scritto il seguente codice

SPList lstBookings = web.Lists.TryGetList("Bookings");
                    lstBookings.EnableThrottling = false;
.

Ma ciò richiede che il codice sia in esecuzione sotto privilegi elevati, perché se accedo come utente non amministratore non è possibile effettuare un errore.

Chiunque qualsiasi idea?

Grazie.

È stato utile?

Soluzione

Enablethroftling sembra richiedere i privilegi dell'amministratore dell'azienda agricola.Dai un'occhiata al seguente codice:

public bool EnableThrottling
{
    get { ... }
    set
    {
        bool nothrottlevalue = !value;
        this.SetListNoThrottle(nothrottlevalue);
    }
} 

internal void SetListNoThrottle(bool nothrottlevalue)
{
    SPSite site = this.ParentWeb.Site;
    if (!site.WebApplication.Farm.CurrentUserIsAdministrator(true))
        SPGlobal.HandleUnauthorizedAccessException(new UnauthorizedAccessException());
    else
        { ... }
}
.

L'account di sistema, a sua volta, ha il privilegio dell'amministratore della raccolta del sito.IPSECURITY.RUNWITHELEVATEDPrivileges consente di eseguire il codice sotto l'identità del pool di applicazioni, che ha gli stessi privilegi di amministratore della raccolta siti su tutte le raccolte di siti.

Altri suggerimenti

Eseguire questo pezzo di codice come utente dell'utente dell'identità del pool di applicazione:

SPSecurity.RunWithElevatedPriveleges( () => {
     using (var site = new SPSite(SPContext.Current.Site.ID))
                {
                    var web = site.RootWeb;
                    var lstBookings = web.Lists.TryGetList("Bookings");
                    lstBookings.EnableThrottling = false;
                    lstBookings.Update();
                }
});
.

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