2009-10-23 80 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

相關問題