通过API进行Kentico自动同步无法正常工作

时间:2018-03-15 23:20:12

标签: c# kentico

我在CMS中编写了一个计划任务,用于在我们的测试环境中创建新文档,并将登台任务自动同步到生产环境。文档创建部分工作正常,任务创建部分也是如此,但我无法弄清楚为什么暂存任务不会自动同步。

这是代码

    List<ISynchronizationTask> tasks = new List<ISynchronizationTask> ( );
    TreeProvider treeProvider = new TreeProvider ( );
    NodeSelectionParameters nodeSelectionParameters = new NodeSelectionParameters
    {
        AliasPath = "/Path",
    };
    TreeNode parentPage = treeProvider.SelectSingleNode ( nodeSelectionParameters );

    ServerInfo serverInfo = ServerInfoProvider.GetServerInfo ( "server", SiteContext.CurrentSiteID );

    TreeNode newPage = TreeNode.New ( "Class", treeProvider );
    newPage.DocumentName = "Title";
    newPage.DocumentCulture = "en-us";
    newPage.Insert ( parentPage );
    newPage.Publish ( "Created by Scheduled Task" );

    tasks.AddRange ( DocumentSynchronizationHelper.LogDocumentChange ( parentPage, TaskTypeEnum.CreateDocument, true, false, treeProvider, serverInfo.ServerID, null, false ) );

    if ( tasks.Any ( ) )
    {
        foreach ( var sTask in tasks )
        {
            string result = new StagingTaskRunner ( serverInfo.ServerID ).RunSynchronization ( sTask.TaskID );
        }
    }

result方法中的RunSynchronization字符串始终返回空字符串或空字符串。

还不确定这些任务是由newPage.Publish还是DocumentSynchronizationHelper.LogDocumentChange方法

创建的

1 个答案:

答案 0 :(得分:2)

日志更改记录了分段中的更改,但您可能希望首先使用普通API来获取任务,而不是使用任务变量。

有些事情可能会发生。首先,我会在您创建任务并检查数据库中的登台任务表之后立即断点,实际创建可能是在单独的线程之后或之后完成的,因此在代码运行时您实际上无法访问它或它试图在它创建之前提交它。

老实说,我只是创建一个单独的任务来自动推送,或者在任务创建的全局事件中添加逻辑,然后推送它。

否则另一件事就是确保启用了分段,即使你想在没有设置分段的情况下推送某些东西也不会。