Pregunta

Quiero deshabilitar la lista de aceleración a través del código, por lo que he escrito el siguiente código

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

¿Pero sí requiere que el código se ejecute bajo privilegios elevados, ya que si vuelvo a iniciar sesión como usuario no administrador, me da un error, no puede iniciar sesión?

¿Alguien alguna idea?

gracias.

¿Fue útil?

Solución

EnablethRottling parece requerir privilegios de administradores de granja.Eche un vistazo al siguiente código:

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

La cuenta del sistema, a su vez, tiene privilegio de administrador de colección del sitio.El SPSECIurity.RunwitheleVatedPrivileges permite ejecutar código bajo la identidad de la aplicación del grupo, que tiene los mismos privilegios de administrador de colección de sitios en todas las colecciones de sitios.

Otros consejos

Ejecute esta pieza de código como el usuario de la identidad del grupo de aplicaciones:

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

Licenciado bajo: CC-BY-SA con atribución
scroll top