-2

我們的要求是將內容頁面的內容發佈安排在Tridion CMS應用程序中以循環間隔運行。我們目前正在使用Tridion 2009 SP1版本。在SDL中創建和部署Windows服務發佈頁面Tridion

按照從專家的建議,如:Tridion 2009 SP1: How to schedule a content page for a recurring publishing?我們已經創建了一個引用了一個簡單的C#控制檯應用程序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.Tridion CMS服務器沒有安裝Visual Studio,請建議一種方法來運行此應用程序,並驗證我們是否能夠根據需要發佈內容。

2.在Tridion CMS服務器中安裝此應用程序並安排它每週以期望的間隔運行。

+0

也許你可以包含你的App.config - ConfigurationManager.AppSettings [「SharedPath」]似乎是設置預定日期的一種奇怪方式。我也指出了答案在這裏 - http://stackoverflow.com/a/14885307/1088449 – 2013-03-06 04:53:28

回答

6

您不需要Visual Studio來運行您的新控制檯應用程序,只需編譯它並將文件複製到CMS服務器即可。

如果您運行該應用程序,您應該看到出現在您的發佈隊列中的項目,如果您沒有看到您的項目添加到發佈隊列,我會建議添加一些日誌調用到您的應用程序,以便您可以看到代碼失敗(如果您之前沒有做過日誌記錄,請考慮使用Log4J.NET)。

一旦您驗證了它的工作方式,安排它的最簡單方法是使用Windows Task Scheduler創建任務。無法從CMS內運行此類任務。或者,您可以將您的控制檯應用程序轉換爲Windows服務,但我認爲在這種情況下這將是矯枉過正的。

+0

感謝克里斯,但當我們試圖在CMS服務器中運行編譯代碼,我們堅持以下錯誤:「無法投射類型'Tridion.ContentManager.Interop.TDS.TDSEClass'的COM對象轉換爲接口類型'Tridion.ContentManager.Interop.TDS._TDSE'。「能否請您提出建議。 – raniworld 2013-03-06 20:09:19

+0

您的代碼是否在您的開發機器上運行?確保您已經引用了PIA文件夾中的所有interop文件,並且您將針對與您打算在實際CMS服務器上使用的DLL相同的版本編譯代碼。我現在無法測試這個,但是我今天晚上將嘗試在我的服務器上嘗試你的代碼。 – 2013-03-06 21:40:17

+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。 Main(String [] args)in D:\ AutoPublish \ AutoPublish_ app \ AutoPublish_app \ Program.cs:line 35「 – raniworld 2013-03-07 05:34:23

相關問題