Как решить ошибку Sharepoint CSOM HTTP Request 429?

Sharepoint часто отображает ошибку 429 (слишком много запросов), и мы уже предприняли все действия, описанные в статье ниже, но некоторые запросы продолжают блокироваться.

https://docs.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online

В нашем сценарии используется настраиваемое настольное приложение (надстройка) для Word, Excel, Power Point и Outlook, которое обращается к Sharepoint через CSOM (с учетными данными пользователя в сети), и мы уже зарегистрировали эту надстройку через "/_layouts/15/AppRegNew.aspx"и украсил все наши запросы"NONISV|{НАШЕ ИМЯ ОРГАНИЗАЦИИ}|{НАШЕ ИМЯ ДОБАВЛЕНИЯ}/1.0 ", как описано в:

https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/register-sharepoint-add-ins

0 ответов

Следуйте инструкциям в этой статье Microsoft:

https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/register-sharepoint-add-ins

После регистрации надстройки сделайте это при создании контекста SharePoint (с помощью CSOM):

    private void Initialize()
    {
        this.SPCurrentContext = new ClientContext(this.Url);

        if (string.IsNullOrWhiteSpace(this.Domain))
        {
            this.SPCurrentContext.Credentials = new SharePointOnlineCredentials(this.User, ParseToSecureString(this.Password));
        }
        else
        {
            this.SPCurrentContext.Credentials = new NetworkCredential(this.User, ParseToSecureString(this.Password), this.Domain);
        }

        this.RetryCount = Properties.Settings.Default.DefaultRetryCount;
        this.RetryDelay = Properties.Settings.Default.DefaultRetryDelay;
        this.NONISV = Properties.Settings.Default.ClientAppNONISV;

        this.SPCurrentContext.ExecutingWebRequest += delegate (object sender, WebRequestEventArgs e)
        {
            e.WebRequestExecutor.WebRequest.UserAgent = this.NONISV; // This is the TRICK!!!
        };
    }

NONISV, используемый в качестве HTTP-заголовка User-Agent, должен быть примерно таким:

NONISV|{Название вашей компании}|{Имя вашей надстройки}/1.0

Как описано здесь. Удачи!

Другие вопросы по тегам