質問

コードスロットルを無効にして、次のコードを書きました

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

しかしこれは、習得以外の特権の下でコードが実行されることを必要とします。

誰かのアイデア?

ありがとう。

役に立ちましたか?

解決

enablethrottling farm管理者権限を要求するようです。次のコードを見てください。

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は、すべてのサイトコレクションで同じサイトコレクション管理者権限を持つアプリケーションプールIDの下のコードを実行できます。

他のヒント

このコードをアプリケーションプールIDユーザーとして実行します。

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