четверг, 12 апреля 2012 г.

Ошибка при вызове SharePoint SPListCollection.EnsureSitePagesLibrary

На днях столкнулся с проблемой невозможности создания списка SitePages. Ни через SPListItemCollection.Add() ни через SPListItemCollection.EnsureSitePagesLibrary() создать его не получалось, а SP кидал невероятную ошибку о том, что список с таким названием уже существует.

После полудня дебагинга БД удалось-таки выяснить причину. На сайте в корне каким-то образом была создана папка SitePages и SP не хотел с ней мириться. В хранимой процедуре proc_PrepareForListCreation есть такой блок:

    IF EXISTS(
        SELECT TOP 1
            1
        FROM
            TVF_Docs_Url(@SiteId, @DirName, @FolderNameBase))
    BEGIN
        IF @bAlternateUrlOnCollision = 0
            RETURN 80
        ...
    END

TVF_Docs_Url(@SiteId, @DirName, @FolderNameBase)) возвращал папку с названием списка, которая по какой-то причине существовала, а @bAlternateUrlOnCollisionв при создании списка приходил 0. SP радостно кидал общую ошибку о якобы существовании списка с таким названием.

Почему разработчики SP не могли добавить чуть больше статус кодов для меня остаётся загадкой.

Комментариев нет:

Отправить комментарий