2009-09-20 6 views
0

사용자 지정 사이트 정의가 있고 프로비저닝 처리기에서 SPWeb.ApplyWebTemplate ("My site defintion name")을 사용하여 사이트 정의를 적용하고 있습니다. 그것은 잘 작동하지만 웹 템플릿을 적용하는 데 약간의 지연이 있음을 관찰했습니다.SPWeb.ApplyWebTemplate() 메서드 - 지연 문제

내가 한 것은 내 사이트 정의의 onet에서 masterurl 속성을 /_catalogs/masterpage/MyMaster.master로 설정 한 것입니다. 지금 나는이 위치 정의를 사용하여 위치 폴더의 밑에 위치를 창조하면, 위치 창조는 성공적으로 그러나 발견에 "자원을"찾아 낼 수없는 것과 같이 오류를 던진다. 나는 몇 가지 조사를했고 마스터 URL이 사이트 상대가 아니라 서버 상대가되어야한다는 것을 알게되었습니다. 따라서 프로비저닝 코드에서 템플릿을 적용한 후에 사이트의 서버 상대 URL을 선행하여 마스터 URL을 업데이트하는 코드를 작성합니다.

Web.MasterUrl = Site.ServerRelativeUrl + Web.MasterUrl;

하지만 사이트를 탐색 할 때 작동하지 않았고 동일한 오류가 발생했습니다. 코드를 디버깅하고 템플릿을 적용한 후에도 마스터 URL이 default.master로 설정된다는 것을 알았습니다. 나는 그 진술을 디버그 모드에서 기다렸다가, 약간의 시간 (몇 초) 후에 마스터 URL이 onet 즉 MyMaster.master에 설정된 URL로 변경된다는 것을 알았다.

ApplyWebTemplate()이 비동기 메소드 인 것처럼 보입니다. 웹 템플릿 적용 프로세스가 완료되었음을 어떻게 확신 할 수 있습니까?

감사합니다.

답변

0

호출 후 사이트에 대한 새 spWeb 개체를 가져 와서 Template 속성을 확인할 수 있습니다.