2009-10-23 8 views
0

UPDATESharePoint - Invalid поле Name Error

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

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

ORIGINAL ВОПРОС

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

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

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

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

ответ

0

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

// 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); 
} 
+0

Поскольку этот сайт основан на определении Издательского портала, эти функции должны быть активированы. Однако, я думаю, я могу использовать ваш код, чтобы убедиться, что это так, прежде чем пытаться внедрить код, включающий инфраструктуру публикации. Я посмотрю, как это происходит. – Charlie

+0

Просто попробовал это, и обе эти функции активируются в соответствующем семействе сайтов до моего кода, но ошибка все еще происходит. – Charlie

0

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

FIELDNAME = web.lists [MyList] .полей ["FieldName"]. InternalName

+0

Я не обращаюсь ни в какие поля. Как вы можете видеть из моего примера кода, это происходит из кода, запускаемого во время GetAvailablePageLayouts(). Я подозреваю, что проблема связана с сроками. – Charlie