サーバーオブジェクトモデルを介してリストスロットルを無効にします
-
29-09-2020 - |
質問
コードスロットルを無効にして、次のコードを書きました
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();
}
});
. 所属していません sharepoint.stackexchange