-2

우리의 요구 사항은 Tridion CMS 응용 프로그램에서 되풀이되는 간격으로 실행되도록 콘텐츠 페이지의 콘텐츠 게시를 예약하는 것입니다. 현재 Tridion 2009 SP1 버전을 사용 중입니다. 전문가의 제안으로 당과SDL Tridion에서 Windows 서비스 게시 페이지 만들기 및 배포

: 우리가 언급 한 간단한 C# 콘솔 응용 프로그램을 만든 Tridion 2009 SP1: How to schedule a content page for a recurring publishing? Triond 상호 운용성 .DLL의 아래 : 우리가 처음으로

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Tridion.ContentManager.Interop.TDS; 
using Tridion.ContentManager.Interop.TDSDefines; 
using Tridion.ContentManager.Interop.msxml4; 
using System.Configuration; 

namespace SchedulePublish 
{ 
class Program 
{   
    static void Main(string[] args) 
    { 
     //Please use your system related corresponding webdav url's and tcm id's where ever required. Below are just sample :) 
     TDSE tdse = new TDSE(); 
     //Give some identity that has access rights on tridion UI 
     string Identity = @"Domain Name\Username"; 
     tdse.Impersonate(Identity); 
     tdse.Initialize(); 

     string targetTypeId = "tcm:0-1-65537"; 
     Publication Pub_Obj = (Publication)tdse.GetPublication("/webdav/30%20DIRECTV%20sites"); 
     XMLReadFilter Filter = new XMLReadFilter(); 
     Component CompObj = (Component)tdse.GetObject("/webdav/30%20DIRECTV%20sites/Home/System/xml/Knavigation.xml", 
            EnumOpenMode.OpenModeView, Pub_Obj.ID, Filter); 
     DateTime schedulePublishDate = Convert.ToDateTime(ConfigurationManager.AppSettings["SharedPath"].ToString()); 
     CompObj.Publish(targetTypeId, false, false, false, schedulePublishDate, DateTime.MinValue, DateTime.Now, true, EnumPublishPriority.High, false, 3); 
    } 
} 
} 

, 구현하는 포인터를 제공하십시오 아래 단계 :

1.Triide CMS 서버에 Visual Studio가 설치되어 있지 않으므로이 응용 프로그램을 실행하고 필요에 따라 콘텐츠를 게시 할 수 있는지 확인하십시오.

2.이 응용 프로그램을 Tridion CMS 서버에두고 매주 원하는 간격으로 실행되도록 예약하십시오.

+0

아마도 App.config - ConfigurationManager.AppSettings [ "SharedPath"]를 포함시킬 수 있습니다. 예약 된 날짜를 설정하는 이상한 방법입니다. 나는 또한 여기에 대답 - http://stackoverflow.com/a/14885307/1088449 –

답변

6

새 콘솔 앱을 실행하는 데 Visual Studio가 필요하지 않습니다. 간단히 컴파일하고 파일을 CMS 서버에 복사하면됩니다.

게시 응용 프로그램을 실행하는 경우 게시 대기열에 항목이 표시되어야합니다. 게시 대기열에 항목이 추가되지 않으면 응용 프로그램에 일부 로깅 호출을 추가하는 것이 좋습니다. 코드가 실패했습니다 (이전에 로깅을 수행하지 않은 경우 Log4J.NET 사용을 고려하십시오).

원하는대로 작동하는지 확인했으면 Windows Task Scheduler을 사용하여 작업을 만드는 것이 가장 쉽습니다. 이러한 작업을 CMS 내에서 실행할 수있는 방법은 없습니다. 또는 콘솔 응용 프로그램을 Windows 서비스로 변환 할 수는 있지만이 경우 잔인하다고 생각합니다.

+0

크리스 감사하지만 우리는 CMS 서버에서 컴파일 된 코드를 실행하려고하면 우리는 아래의 오류가 붙어있다 : "캐스트 수 없습니다 'Tridion.ContentManager.Interop.TDSEClass'유형의 COM 개체를 인터페이스 유형 'Tridion.ContentManager.Interop.TDS._TDSE'에 연결하십시오. "제안 해주십시오. – raniworld

+0

코드가 개발 컴퓨터에서 실행됩니까? PIA 폴더의 모든 interop 파일을 참조했는지 확인하고 실제 CMS 서버에서 사용할 것과 동일한 버전의 DLL에 대해 코드를 컴파일했는지 확인하십시오. 지금은 이것을 테스트 할 수 없지만 오늘 저녁에 내 서버에서 코드를 시험해 보려고합니다. –

+1

올바른 버전 DLL을 바꾸면 위의 오류를 해결하는 데 도움이됩니다. 이제 'System .__ ComObject'유형의 COM 개체를 인터페이스 유형 'Tridio n.ContentManager.Interop.TDS.Component'로 캐스팅 할 수 없습니다.이 작업은 COM 구성 요소의 인터페이스 호출로 인해 실패했습니다. 다음 오류로 인해 IID '{77928509-4894-4 2C7-A08B-56DE59D05439}'인터페이스가 실패했습니다.이 인터페이스는 을 이식했습니다 (HRESULT의 예외 : 0x80004002 (E_NOINTERFACE)). at AutoPublish_app.Program. D : \ AutoPublish \ AutoPublish_ app \ AutoPublish_app \ Program.cs : 35 " – raniworld

관련 문제