2009-10-23 50 views
0

UPDATE的SharePoint - 无效的字段名称错误

值得关注的是这只是发生时,该网站的定义是从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上找到的所有引用(原文如此)都与Field Type'PublishingHidden'丢失有关,但是如何恢复鉴于这种情况发生在网站集供应过程中?

感谢

查理

回答

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 2009-10-26 08:57:17

+0

刚刚尝试过这一点,并且在我的代码运行之前,这两个功能都在相关网站集上激活,但仍然出现错误。 – Charlie 2009-10-26 10:20:39

0

你可能要检查你的代码,并确保你不被它的显示名称访问场...

字段名= web.lists [MYLIST]点域[“FieldName”]。InternalName

+0

我没有访问任何字段。从您的代码示例中可以看到,这是来自GetAvailablePageLayouts()期间正在运行的代码。我怀疑这个问题是时机问题之一。 – Charlie 2009-10-26 08:58:49

相关问题