SharePoint - 无效的字段名称错误

时间:2009-10-23 15:30:32

标签: sharepoint moss publishing provisioning

更新

值得注意的是,只有在从SPWebApplication.Sites.Add调用网站定义时才会发生这种情况,如果我使用UI,那么这样可以正常工作。我的代码在调用此代码时冒充系统帐户。

我认为SPSite的ApplyWebTemplate()方法是异步的吗?如果是这种情况,那么我的问题可能就是时机问题。即运行此代码时,所需的基础结构尚未到位。

原始问题

我有一个自定义网站定义,它使用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}

这只发生在我们的直播农场。它不是在开发或测试环境中发生的,所以我希望它是一个配置更改,但我可以在Tinterweb(原文如此)上找到的所有引用都与字段类型'PublishingHidden'缺失有关,但我该如何恢复它鉴于这是在网站集配置过程中发生的吗?

由于

查理

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您可能需要检查代码并确保没有按显示名称访问该字段...

fieldName = web.lists [mylist] .Fields [“FieldName”]。InternalName