2011-10-11 2 views
2

내 발행물 WebDAV URL을 얻으려고합니다. 아래에서 논리적으로 노력하고 있습니다. 페이지 및 구성 요소의 webdavurl을 성공적으로 가져 왔지만 게시 URL을 얻으려고 애 쓰고 있습니다.C# .NET에서 발행물 WebDAV URL을 얻는 방법

public static string getPublicationWebDav(string partialWebdavURL, Package package, Engine engine) 
{ 
string webDav = string.Empty; 
string pubURI = string.Empty; 
if (!string.IsNullOrEmpty(partialWebdavURL)) 
{ 
_log.Info("partialWebdavURL" + partialWebdavURL); 

RepositoryLocalObject repLocalObject = null; 

if (repLocalObject == null) 
{ 
Item pubItem = package.GetByType(ContentType.Publication); 

repLocalObject = (Publication)engine.GetObject(pubItem.GetAsSource().GetValue("ID")); 
} 
webDav = repLocalObject.WebDavUrl + partialWebdavURL; 
} 
_log.Info("webDav" + webDav); 
return webDav; 
} 

이 라인은 내가 코드가 잘 작동 아래의 페이지 객체가 제대로 작동 얻기 위해 노력하고 있어요 그러나 때 오류를 나에게

repLocalObject = (Publication)engine.GetObject(pubItem.GetAsSource().GetValue("ID")); 

을 제공합니다.

내 목표는 발행물 webdavURL을 얻는 것입니다.

답변

4

tridion 포럼에서 긴 검색을 한 후 해결책을 찾았습니다. Nuno에 감사드립니다 !!

는 // 먼저 우리는 우리가 다음 코드는 2011 작동하지만 2009 (저장소의 WebDavUrl가 노출되지 않음) 여부에 있음을

RepositoryLocalObject context; 
    if (p.GetByName(Package.PageName) != null) 
     context = e.GetObject(p.GetByName(Package.PageName)) as RepositoryLocalObject; 
    else 
     context = e.GetObject(p.GetByName(Package.ComponentName)) as RepositoryLocalObject; 

Repository contextPublication = context.ContextRepository; 
string webdavUrl = contextPublication.WebDavUrl; 

주를 렌더링하고있는 현재의 객체를 찾을 수있다. 2009 년에는 대신 contextPublication.RootFolder.WebDavUrl을 얻었습니다.