На днях столкнулся с проблемой невозможности создания списка 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 не могли добавить чуть больше статус кодов для меня остаётся загадкой.
После полудня дебагинга БД удалось-таки выяснить причину. На сайте в корне каким-то образом была создана папка 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 не могли добавить чуть больше статус кодов для меня остаётся загадкой.
Комментариев нет:
Отправить комментарий