Случайная ошибка "Исключение из HRESULT: 0x80131904" при попытке добавить элемент в пустой список на новом дочернем сайте, созданном при предыдущем вызове REST

В приложении Angular5 в SharePoint Online мы генерируем 2 дочерних сайта на основе пользовательского ввода через API REST с использованием ранее сохраненных шаблонов сайта:

updateNewAPP(newAPP: Anteproyecto, tmplAnteProyecto: string, tmplInfoCliente: string) {
    const bodyObj = {
      '__metadata': { 'type': 'SP.Data.Proyectos_x0020_AnteproyectosListItem' },
      'N_x00ba__x0020_de_x0020_anteproy': newAPP.noDeAnteproyecto,
      'Title': newAPP.title
    };
    const bodyObj2 = {
      'parameters': {
        '__metadata': { 'type': 'SP.WebInfoCreationInformation' },
        'Url': newAPP.noDeAnteproyecto,
        'Title': newAPP.noDeAnteproyecto,
        'Description': newAPP.title,
        'Language': 3082,
        'WebTemplate': tmplAnteProyecto,
        'UseUniquePermissions': false
      }
    };
    const bodyObj3 = {
      'parameters': {
        '__metadata': { 'type': 'SP.WebInfoCreationInformation' },
        'Url': newAPP.noDeAnteproyecto + '-InfoCliente',
        'Title': newAPP.noDeAnteproyecto + '-InfoCliente',
        'Description': newAPP.title + ' - Info Cliente',
        'Language': 3082,
        'WebTemplate': tmplInfoCliente,
        'UseUniquePermissions': false
      }
    };
    return Observable.forkJoin(
      this._sharepointService.SPUpdateItem('Proyectos Anteproyectos', bodyObj, newAPP.id.toString()),
      this._sharepointService.SPAddSubsite(bodyObj2),
      this._sharepointService.SPAddSubsite(bodyObj3)
    );
  }

где SPAddSubSite() отправляет POST в конечную точку /_api/web/webinfos/add. При успешном возвращении наблюдаемых следующий шаг в коде генерирует один элемент в списке на обоих новых дочерних сайтах:

addLinksNewAPP(newAPP: Anteproyecto) {
    const observables = [];
    const bodyObj = {
      '__metadata': { 'type': 'SP.Data.EnlacesListItem' },
      'Title': newAPP.noDeAnteproyecto + '-InfoCliente',
      'enlace': {
        '__metadata': { 'type': 'SP.FieldUrlValue' },
        'Description': newAPP.title + ' - Info Cliente',
        'Url': _spPageContextInfo.webServerRelativeUrl + this.urlPrefix + newAPP.noDeAnteproyecto + '-InfoCliente'
      }
    };
    observables.push(this._sharepointService.SPAddItemSubSite('Enlaces', bodyObj, newAPP.noDeAnteproyecto));
    const bodyObj2 = {
      '__metadata': { 'type': 'SP.Data.EnlacesListItem' },
      'Title': newAPP.noDeAnteproyecto,
      'Enlace': {
        '__metadata': { 'type': 'SP.FieldUrlValue' },
        'Description': newAPP.title,
        'Url': _spPageContextInfo.webServerRelativeUrl + this.urlPrefix + newAPP.noDeAnteproyecto
      }
    };
    observables.push(this._sharepointService.SPAddItemSubSite('Enlaces', bodyObj2, newAPP.noDeAnteproyecto + '-InfoCliente'));

    return Observable.forkJoin(observables);
  }

где SPAddItemSubSite отправляет POST в конечную точку /...subsitio.../_api/web/lists/getByTitle('listname')/items. Затем процесс продолжается только после получения успешного ответа от вызовов REST для дальнейшей модификации дочерних сайтов.

Обычно этот процесс работает правильно, занимая от 30 до 45 секунд для создания 2 дочерних сайтов, но иногда (примерно 1 из 10) после создания дочерних сайтов, один из следующих 2 вызовов REST для создания элементов в списках на дочерних сайтах завершается с 500 и сообщением об ошибке:

код: "-2146262060, Microsoft.SharePoint.SPException"

сообщение: {lang:"es-ES", значение: "Исключение из HRESULT: 0x80131904"}

В предыдущих версиях SharePoint этот код исключения указывал на проблему с SQL Server, такую ​​как нехватка места на диске - список неполадок с кодом и его возможными причинами можно найти здесь - https://social.technet.microsoft.com/wiki/contents/articles/37416.sharepoint-20132010-troubleshooting-exception-hresult-0x80131904.aspx

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

Служба поддержки Office365 не смогла помочь (API REST НЕ покрывается ими), но они предположили, что это может быть связано с разрешениями.

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

Кто-нибудь знает, верно ли мое подозрение или кто-то испытывал подобные попытки, пытаясь изменить сайт сразу после его создания? Есть ли способ определения, когда сайт был полностью сгенерирован, кроме ответа на вызов REST, который создает сайт?

Есть ли какая-то другая причина, почему мы можем видеть эту ошибку только иногда?

0 ответов

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