Решение ошибки в 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). Чтобы найти битый список необходимо:
- В SharePoint Designer пытаемся воспроизвести проблему, открыв "Спики и библиотеки", чтобы появилась вышеуказанная ошибка.
- Заходим в логи SharePoint (если не переопределяли местоположение логов, то %programfiles%\Common Files\microsoft shared\Web Server Extensions\15\LOGS). Открываем последний лог-файл и ищем в нём ключевую фразу "Failed to retrieve the list schema for feature", берём Correlation Id этой ошибки.
- Фильтруем лог-файл по найденному Corellation Id (например, с помощью SharePoint LogViewer).
- Затем находим строку вида:
SPRequest.GetListContentTypes: UserPrincipalName=i:0).w|s-1-5-21-1914333041-867860282-711040046-12721, AppPrincipalName= ,bstrUrl=http://<YourSite> ,bstrListName={ED5F7F64-63B0-4894-9F5C-9E7CB12B9768}
- В параметре "bstrListName" указан GUID проблемного списка.
- Чтобы узнать название списка достаточно выполнить REST запрос к списку по GUID и посмотреть свойство Title:
<YourSite>/_api/web/lists('ED5F7F64-63B0-4894-9F5C-9E7CB12B9768')
Вместо <YourSite> - подставить URL сайт-коллекции, GUID заменить на свой.
Это проще всего и под рукой ничего проме браузера иметь не требуется.
- Далее осталось только разобраться со списком-виновником, самый простой способ – казнить (удалить) :). На самом деле в зависимости от того, что это за список, есть ли в нем данные и задействован ли он в Вашем решении, Вы сами поймете, что с ним делать. Правда, чаще всего, "битые" списки являются результатом неудачного деплоя решения на ранних стадиях разработки.
При необходимости повторить процедуру N-ое количество раз, так как битых списков может быть множество.
Надеюсь, будет полезно. Т.к. в современной разработке под SharePoint очень часто приходится совмещать различные инструменты разработки, в том числе и SPD.
Опубликовано: 25.06.2015
Автор: Владислав Иванов