SharePoint - Invalid Field Name Error

自作多情 提交于 2019-12-13 02:56:33

问题


UPDATE

Worth noting that this is only happening when the site definition is called from SPWebApplication.Sites.Add, if I use the UI then this works fine. My code is impersonating the system account when calling this code.

Am I right in thinking that the ApplyWebTemplate() method of SPSite is asynchronous? If this is the case then my issue is probably one of timing. I.e. the required infrastructure is not yet in place when this code is run.

ORIGINAL QUESTION

I have a custom site definition which is using an SPProvisioningProvider to configure the site collection.

After calling ApplyWebTemplate("BLANKINTERNET#0") to apply the standard publishing portal site defintion, I am trying to create a new page based on the welcome page with TOC page layout.

However I am getting an exception when I call this piece of code

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

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

The following exception is raised at the GetAvailablePageLayouts method call.

Invalid field name. {7581e709-5d87-42e7-9fe6-698ef5e86dd3}

This is only happening on our live farm. It did not happen on dev or in the test environment so I am hoping it is a configuration change, but all references I can find on Tinterweb (sic) are related to the Field Type 'PublishingHidden' being missing, but how can I restore this given that this is happening in the site collection provisioning process?

Thanks

Charlie


回答1:


are all required features (publishing infrastructure etc.) activated before performing this action? use something like the following:

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



回答2:


You might want to check your code and make sure you are not accessing the field by its display name...

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



来源:https://stackoverflow.com/questions/1614225/sharepoint-invalid-field-name-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!