Question

Je souhaite désactiver la liste de la liste par le biais du code de sorte que j'ai écrit le code suivant

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

Mais cela nécessite-t-il que le code fonctionne sous des privilèges élevés, car si je vous connecte à un utilisateur non administrateur, cela me donne une erreur ne peut pas se connecter.

Quelqu'un des idées?

merci.

Était-ce utile?

La solution

Enablethrottling semble nécessiter des privilèges d'administrateur de la ferme.Jetez un coup d'œil au code suivant:

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
        { ... }
}

Le compte système, à son tour, possède un privilège d'administrateur de collecte de site.Les privilèges SPSecurity.RunWithelevated Permet d'exécuter un code sous l'identité du pool d'applications, qui a les mêmes privilèges d'administrateur de collecte de sites sur toutes les collections de sites.

Autres conseils

Exécuter ce morceau de code en tant qu'utilisateur d'identité du pool d'applications:

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();
                }
});

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top