更新
值得注意的是,只有在从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'缺失有关,但我该如何恢复它鉴于这是在网站集配置过程中发生的吗?
由于
查理
答案 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