0

アップデート

これは、サイト定義が SPWebApplication.Sites.Add から呼び出されたときにのみ発生することに注意してください。UI を使用すると、これは正常に機能します。私のコードは、このコードを呼び出すときにシステム アカウントを偽装しています。

SPSite の ApplyWebTemplate() メソッドが非同期であると考えるのは正しいですか? この場合、私の問題はおそらくタイミングの 1 つです。つまり、このコードの実行時には、必要なインフラストラクチャがまだ整っていません。

元の質問

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 (sic) で見つけることができるすべての参照は、フィールド タイプ 'PublishingHidden' が欠落していることに関連していますが、どうすればこれを復元できますかこれがサイト コレクションのプロビジョニング プロセスで行われていることを考えると?

ありがとう

チャーリー

4

2 に答える 2

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);
}
于 2009-10-25T01:14:22.623 に答える