Sitecore:当项目处于发布限制期时,获取父项目的子项目

Sitecore:当项目处于发布限制期时,获取父项目的子项目,sitecore,Sitecore,我正在尝试获取某个项的子项,其中一些子项应用了发布限制,并且结束日期已过期。 我想收集所有的子项,无论是否过期。 当我调试代码时,我只得到那些在时间上有结束日期的项目。 我使用了以下代码 var childItems=item.GetChildren(); 子项集合仅收集在时间上有结束日期的子项 有没有办法收集所有物品 我在sitecore论坛上问过,他们要求从主数据库中获取子项,但这种方法也不起作用。我也尝试了以下代码 Sitecore.Data.Database master = Site

我正在尝试获取某个项的子项,其中一些子项应用了发布限制,并且结束日期已过期。 我想收集所有的子项,无论是否过期。 当我调试代码时,我只得到那些在时间上有结束日期的项目。 我使用了以下代码

var childItems=item.GetChildren();
子项集合仅收集在时间上有结束日期的子项

有没有办法收集所有物品

我在sitecore论坛上问过,他们要求从主数据库中获取子项,但这种方法也不起作用。我也尝试了以下代码

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Item parentNode= master.GetItem("ItemNAme");
var childItems=parentNode.GetChildren();
childitems仅收集结束日期未过期的子项 请给我建议一些解决办法

提前谢谢


-Vaibhav

您所说的转到主数据库是正确的,因为主数据库包含所有内容的所有版本,而不仅仅是公开发布的内容。我会将您的代码包装在一个
SecurityDisabler()
中,以防它以某种方式干扰获取正确的项目

using(new SecurityDisabler()) {
    Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
    Item parentNode= master.GetItem("ItemNAme");
    var childItems=parentNode.GetChildren();
}

您所说的转到主数据库是正确的,因为主数据库包含所有内容的所有版本,而不仅仅是公开发布的内容。我会将您的代码包装在一个
SecurityDisabler()
中,以防它以某种方式干扰获取正确的项目

using(new SecurityDisabler()) {
    Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
    Item parentNode= master.GetItem("ItemNAme");
    var childItems=parentNode.GetChildren();
}

您发现此问题的原因与安全性无关

当IsPreview为true(基于cookie)且允许在站点配置上进行筛选时,您将无法获取具有发布限制的项目。此功能来自PageEditor预览的实现,在该预览中,您需要像浏览不可见的已发布项目一样浏览主数据库


请参见

上的答案。您发现此问题的原因与安全性无关

当IsPreview为true(基于cookie)且允许在站点配置上进行筛选时,您将无法获取具有发布限制的项目。此功能来自PageEditor预览的实现,在该预览中,您需要像浏览不可见的已发布项目一样浏览主数据库


请参见

上的答案,谢谢马克。。!!!它起作用了。但我对此有一个疑问。每次在我各自的页面加载事件上调用此方法。出于安全目的,这不好吗?否则会伤害什么?谢谢-瓦伊巴冯我观察到的更多的是,在处理这个问题的时候,我遇到了一些维德。应用安全禁用程序后,它开始工作,当删除安全禁用程序时,它现在也在工作:我不知道。事实上,它的工作时间,并停止工作的时候(当我没有使用安全禁用)任何方式。。再次感谢您的帮助,markIt不会损害任何东西,它只会绕过代码块中的所有安全设置。可以将其视为作为超级用户执行该代码块。只要确保你真的想做那些代码所做的事情。。。去大师那里拿那些东西。它是公众可以看到的还是在管理部门后面?(反问句)。谢谢马克。。!!!它起作用了。但我对此有一个疑问。每次在我各自的页面加载事件上调用此方法。出于安全目的,这不好吗?否则会伤害什么?谢谢-瓦伊巴冯我观察到的更多的是,在处理这个问题的时候,我遇到了一些维德。应用安全禁用程序后,它开始工作,当删除安全禁用程序时,它现在也在工作:我不知道。事实上,它的工作时间,并停止工作的时候(当我没有使用安全禁用)任何方式。。再次感谢您的帮助,markIt不会损害任何东西,它只会绕过代码块中的所有安全设置。可以将其视为作为超级用户执行该代码块。只要确保你真的想做那些代码所做的事情。。。去大师那里拿那些东西。它是公众可以看到的还是在管理部门后面?(反问句)。