C# Kentico通过API自动同步不工作

C# Kentico通过API自动同步不工作,c#,kentico,C#,Kentico,我已经在CMS中编写了一个计划任务,用于在测试环境中创建新文档,并将登台任务自动同步到生产环境。文档创建部分工作正常,任务创建部分工作正常,但我不明白为什么临时任务没有自动同步 这是密码 List<ISynchronizationTask> tasks = new List<ISynchronizationTask> ( ); TreeProvider treeProvider = new TreeProvider ( ); NodeSelecti

我已经在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 );
        }
    }
List tasks=newlist();
TreeProvider TreeProvider=新的TreeProvider();
NodeSelectParameters NodeSelectParameters=新的NodeSelectParameters
{
AliasPath=“/Path”,
};
TreeNode parentPage=treeProvider.SelectSingleNode(节点选择参数);
ServerInfo ServerInfo=ServerInfoProvider.GetServerInfo(“服务器”,SiteContext.CurrentSiteID);
TreeNode newPage=TreeNode.New(“类”,treeProvider);
newPage.DocumentName=“Title”;
newPage.DocumentCulture=“en us”;
新建页面。插入(父页面);
发布(“由计划任务创建”);
tasks.AddRange(DocumentSynchronizationHelper.LogDocumentChange(parentPage,TaskTypeEnum.CreateDocument,true,false,treeProvider,serverInfo.ServerID,null,false));
if(tasks.Any())
{
foreach(任务中的var sTask)
{
string result=new StagingTaskRunner(serverInfo.ServerID).RunSynchronization(sTask.TaskID);
}
}
RunSynchronization
方法中的
result
字符串始终返回null或空字符串


还不确定任务是由
newPage.Publish
还是
DocumentSynchronizationHelper.LogDocumentChange
方法创建的,LogChange将更改记录在暂存中,但您可能希望首先使用普通API而不是使用tasks变量获取任务

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

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


否则,另一件事是确保启用了暂存,即使您想在未设置暂存的情况下推送某些内容,它也不会。日志更改会在暂存中记录更改,但您可能希望首先使用普通API而不是使用tasks变量抓取任务

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

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


否则,另一件事是确保启用了登台,即使您想在登台未设置的情况下推送某些内容,也不会这样做。

有意义。任务可以异步创建。我将尝试实现一个有意义的处理程序。任务可以异步创建。我将尝试实现中建议的处理程序