SharePoint - ошибка неверного имени поля - PullRequest
0 голосов
/ 23 октября 2009

UPDATE

Стоит отметить, что это происходит только тогда, когда определение сайта вызывается из SPWebApplication.Sites.Add. Если я использую пользовательский интерфейс, это работает нормально. Мой код олицетворяет системную учетную запись при вызове этого кода.

Правильно ли я считаю, что метод ApplyWebTemplate () SPSite является асинхронным? Если это так, то моя проблема, вероятно, связана с выбором времени. То есть при запуске этого кода необходимая инфраструктура еще не создана.

ОРИГИНАЛЬНЫЙ ВОПРОС

У меня есть пользовательское определение сайта, которое использует SPProvisioningProvider для настройки семейства сайтов.

После вызова ApplyWebTemplate ("BLANKINTERNET # 0") для применения стандартного определения сайта портала публикации я пытаюсь создать новую страницу на основе страницы приветствия с макетом страницы TOC.

Однако я получаю исключение, когда вызываю этот фрагмент кода

Dim pubSite As New PublishingSite(_siteColl)
Dim pubWeb As PublishingWeb = PublishingWeb.GetPublishingWeb(site)

Dim layouts() As PageLayout = Nothing
layouts = pubWeb.GetAvailablePageLayouts(_welcomeContentTypeID)

При вызове метода GetAvailablePageLayouts возникает следующее исключение.

Неверное имя поля. {7581e709-5d87-42e7-9fe6-698ef5e86dd3}

Это происходит только на нашей живой ферме. Это не произошло в dev или в тестовой среде, поэтому я надеюсь, что это изменение конфигурации, но все ссылки, которые я могу найти в Tinterweb (sic), связаны с отсутствием типа поля 'PublishingHidden', но как я могу восстановить это? учитывая, что это происходит в процессе подготовки семейства сайтов?

Спасибо

Charlie

Ответы [ 2 ]

0 голосов
/ 25 октября 2009

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

fieldName = web.lists [mylist] .Fields ["FieldName"]. InternalName

0 голосов
/ 25 октября 2009

все ли необходимые функции (инфраструктура публикации и т. Д.) Активированы перед выполнением этого действия? используйте что-то вроде следующего:

// Check if the 'Publishing Prerequisites' feature is at the web and activated
var pubprereqguid = new Guid("A392DA98-270B-4e85-9769-04C0FDE267AA");
if (site.Features[pubprereqguid] == null)
{
  site.Features.Add(pubprereqguid);
}

// Check if the 'Publishing Resources' feature is at the web and activated
var pubresguid = new Guid("AEBC918D-B20F-4a11-A1DB-9ED84D79C87E");
if (site.Features[pubresguid] == null)
{
  site.Features.Add(pubresguid);
}
...