Решение ошибки в SharePoint Designer при открытии списков и библиотек

Описание проблемы

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

Иногда при открытии в SharePoint Designer объектов "Списки и библиотеки" (Lists and Libraries), "Страницы сайта" (Site Pages), "Активы сайта" (Site Assets) появляется ошибка, блокирующая просмотр перечня списков и библиотек и возможности настройки.

Ошибка при открытии "Списки и библиотеки" гласит "Нет элементов для отображения в этом представлении" ("There are no items to show in this view").

При этом в "Страницах сайта" и "Активах сайта" появляется сообщение: "Отображение представления Document Library для этого веб-сайта невозможно." ("The Document Library view cannot be displayed for this Web site.").

Неприятно, да? Давайте решать.

Решение 

Скорее всего проблема кроется в битом списке, а в частности в списке с отсутвующим описанием или ошибкой в описании (Schema.xml). Чтобы найти битый список необходимо:

  1. В SharePoint Designer пытаемся воспроизвести проблему, открыв "Спики и библиотеки", чтобы появилась вышеуказанная ошибка.
  2. Заходим в логи SharePoint (если не переопределяли местоположение логов, то %programfiles%\Common Files\microsoft shared\Web Server Extensions\15\LOGS). Открываем последний лог-файл и ищем в нём ключевую фразу "Failed to retrieve the list schema for feature", берём Correlation Id этой ошибки.
  3. Фильтруем лог-файл по найденному Corellation Id (например, с помощью SharePoint LogViewer).
  4. Затем находим строку вида:

SPRequest.GetListContentTypes: UserPrincipalName=i:0).w|s-1-5-21-1914333041-867860282-711040046-12721, AppPrincipalName= ,bstrUrl=http://<YourSite> ,bstrListName={ED5F7F64-63B0-4894-9F5C-9E7CB12B9768}

  1. В параметре "bstrListName" указан GUID проблемного списка.
  2. Чтобы узнать название списка достаточно выполнить REST запрос к списку по GUID и посмотреть свойство Title:

<YourSite>/_api/web/lists('ED5F7F64-63B0-4894-9F5C-9E7CB12B9768')

Вместо <YourSite> - подставить URL сайт-коллекции, GUID заменить на свой.
Это проще всего и под рукой ничего проме браузера иметь не требуется. 

  1. Далее осталось только разобраться со списком-виновником, самый простой способ – казнить (удалить)  :). На самом деле в зависимости от того, что это за список, есть ли в нем данные и задействован ли он в Вашем решении, Вы сами поймете, что с ним делать. Правда, чаще всего, "битые" списки являются результатом неудачного деплоя решения на ранних стадиях разработки.

При необходимости повторить процедуру N-ое количество раз, так как битых списков может быть множество.

Надеюсь, будет полезно. Т.к. в современной разработке под SharePoint очень часто приходится совмещать различные инструменты разработки, в том числе и SPD.


Опубликовано: 25.06.2015
Автор: Владислав Иванов