2009-10-23 3 views
0

UPDATE 이것은 단지 사이트 정의가 나는 UI를 사용하는 경우 다음이 잘 작동 SPWebApplication.Sites.Add에서 호출 할 때 무슨 일이 일어나고 있음을 주목할 필요가셰어 - 잘못된 필드 이름 오류

. 이 코드를 호출 할 때 내 코드가 시스템 계정을 가장합니다.

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}

이것은 실제 라이브 팜에서만 발생합니다. 그것은 dev 또는 테스트 환경에서 발생하지 않았으므로 구성 변경이 필요하지만 Tinterweb (sic)에서 찾을 수있는 모든 참조가 누락 된 '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

+0

코드를 실행하기 전에이 두 기능을 관련 사이트 모음에서 활성화했지만 오류가 계속 발생합니다. – Charlie

0
당신은 당신의 코드를 확인하고 표시 이름으로 필드를 액세스하지 있는지 확인 할 수 있습니다

...

은 fieldName = web.lists [myList에] .Fields : 다음과 같은 것을 사용 [ "FieldName"]. 내부 이름

+0

필드에 액세스하지 않습니다. 내 코드 샘플에서 볼 수 있듯이이 코드는 GetAvailablePageLayouts() 중에 실행됩니다. 문제가 타이밍 중 하나라고 생각합니다. – Charlie