Umbraco控制台应用程序,用于更改文档的名称和链接,而不会发布所有子项

时间:2014-09-18 04:35:43

标签: umbraco umbraco7

我使用Umbraco(7.1.4)contentService API编写了一个控制台应用程序来移动某些节点并在网站重新设计中重命名它们。一切正常,除非我将文档重命名为“文档链接”。不会改变。代码改编自https://github.com/sitereactor/umbraco-console-example

private static void MoveNode(IContentService contentService, int nodeId, int newParentId, string newname)
    {
        //Get the Root Content
        var nodeContent = contentService.GetByIds(nodeId.AsEnumerableOfOne()).First();
        nodeContent.Name = newname;                
        contentService.Move(nodeContent, newParentId);
        var status = contentService.SaveAndPublishWithStatus(nodeContent);
        Console.WriteLine(status);
    }

状态为True,当我在后台查看时,页面名称会发生​​变化,但是“文档链接”会被更改。不会改变。现在,如果我使用

var status = contentService.PublishWithChildrenWithStatus(nodeContent);

然后它工作但需要更长的时间(分钟),但如果我在后台更改名称,那么它只需要几秒钟,但链接会正确更新。是否有另一种方法可以在不发布所有孩子的情况下重命名文档?

(我在上面省略了一些代码 - 有时候它会移动它只是重命名,但在任何一种情况下我都必须与孩子一起发布以使其工作。)

1 个答案:

答案 0 :(得分:0)

这似乎是因为XML缓存文件尚未更新。

在这里查看一些方法 http://our.umbraco.org/wiki/reference/api-cheatsheet/publishing-and-republishing

或者最快的只是删除APP_Data \ umbraco.config - XML缓存文件,可能不推荐用于Prod,但可以在开发中快速完成工作。