Вопрос

Я хочу отключить список дросселирования через код, чтобы я написал следующий код

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

Но требует ли это код под возвышенным привилегием, потому что если я вхожу в систему как пользователь без администратора, он дает мне ошибку нельзя войти.

Кто-нибудь какие-либо идеи?

спасибо.

Это было полезно?

Решение

EnableThrottling, похоже, требует привилегий администратора фермы.Посмотрите на следующий код:

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

Системный счет, в свою очередь, имеет привилегию администратора сбора сайта.SPSECURITY.RUNWITHELEVATEDPRIVILEGES позволяет запускать код под идентичности пула приложения, который имеет одинаковые привилегии администратора сбора сайтов на всех коллекциях сайта.

Другие советы

Запустите этот кусок кода в качестве идентификатора пула приложения:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top