Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Umbraco通过代码创建内容会导致缓存失效_C#_Content Management System_Umbraco - Fatal编程技术网

C# Umbraco通过代码创建内容会导致缓存失效

C# Umbraco通过代码创建内容会导致缓存失效,c#,content-management-system,umbraco,C#,Content Management System,Umbraco,我们已经创建了一个区域,客户机可以在该区域管理其站点中的内容,而不是管理员。由于某种原因,当我们创建新内容时,缓存似乎会失效 创建内容后,如果转到管理中的节点,您将在指向文档属性的链接附近看到此错误:Oops:此文档已发布,但不在缓存中(内部错误) 你知道为什么会这样吗?是否有方法在创建项目后检查该项目是否在缓存中 这似乎是导致问题的方法: public static int GetOrCreateContentFolder(IContentService contentService, int

我们已经创建了一个区域,客户机可以在该区域管理其站点中的内容,而不是管理员。由于某种原因,当我们创建新内容时,缓存似乎会失效

创建内容后,如果转到管理中的节点,您将在指向文档属性的链接附近看到此错误:Oops:此文档已发布,但不在缓存中(内部错误)

你知道为什么会这样吗?是否有方法在创建项目后检查该项目是否在缓存中

这似乎是导致问题的方法:

public static int GetOrCreateContentFolder(IContentService contentService, int userId, int parentId, string folderName, string contentTypeAlias)
    {
        var targetContentFolder = 
            contentService.GetChildren(parentId)
            .Where(c => c.Name.ToLower() == folderName.ToLower())
            .ToList();

        if (targetContentFolder.Any())
        {
            return targetContentFolder[0].Id;
        }

        var contentFolder = contentService.CreateContent(folderName, parentId, contentTypeAlias, userId);
        return contentFolder.Id;
    }

似乎需要发布名为“contentFolder”的新节点

如果还需要发布所有子项,请使用
PublishWithChildren


在此处查看ContentService中的所有方法:

您是否处于负载平衡环境中?它是什么版本的umbraco?它不是负载平衡的,我们在Amazon上托管在一个VM上,版本是7.1.4通常当多个开发人员共享同一个umbraco db时会发生这种情况。你能给我看看代码吗?您正在使用ContentService api吗?好的,刚刚发布了导致问题的代码,我们目前正在使用ContentService api。您是否尝试过YOURDOMAIN/Umbraco/dialogs/republish.aspxOkay,我已经更新了代码,感谢这里的帮助。不过我有一个问题,这就是为什么该错误会出现在“管理近文档”属性中:Oops:此文档已发布但未在缓存中(内部错误)Cool it worked:)Umbraco将缓存版本存储在磁盘上的App_数据文件夹中。当某个节点在数据库中设置为“已发布”,但umbraco在缓存中找不到该节点时。。发生此错误,但为什么它不在缓存中?如果已创建但未发布,是否应将其放入缓存?使用CreateContent()创建新节点时,应使用contentService.save(contentFolder)或contentService.SaveAndPublish(contentFolder)保存该节点,以便同时保存和发布。
var contentFolder = contentService.CreateContent(folderName, parentId, contentTypeAlias, userId);
contentService.SaveAndPublish(contentFolder);