在其他程序集中访问Umbraco.TypedContentAtRoot()

本文关键字:Umbraco TypedContentAtRoot 访问 集中 其他 程序 程序集 | 更新日期: 2023-09-27 18:12:33

我正在尝试为发布的Umbraco内容生成xml站点地图。理想情况下,我想访问UmbracoHelper.TypedContentAtRoot()或类似的东西,可以轻松访问已发布的项目。我需要在web解决方案之外访问它,在一个支持程序集内,我正在为Umbraco直接控制之外的动态内容生成xml站点地图和站点地图索引。

有什么最简单的方法吗?我试着参考各种Umbraco程序集,并深入研究什么是现成的,但还没有发现任何立即有用的东西。

我偶然发现

UmbracoContext.Current.Application.Services.ContentService.GetRootContent()

但这似乎需要更深入地了解Umbraco内容是如何在封面下工作的,以便深入提取已发布的内容供我索引。

谁能给我指个正确的方向?提前感谢!

在其他程序集中访问Umbraco.TypedContentAtRoot()

假设您正在创建的DLL将在umbraco站点中使用,您将能够访问UmbracoContent。在你的课堂上是当前的,只要你有Umbraco的参考。核心包,如Mivaweb所述。

另一方面,如果你想从一个完全不相关的外部应用程序(比如一个可执行文件)访问UmbracoContext,那么这就很难做到了。有些人已经把它弄得差不多了,但它有点不稳定。通常在这种情况下,你最好添加某种WebAPI控制器动作,你可以通过HTTP从你的可执行文件调用,这样你就可以完全访问站点上的Umbraco。

更新:

如果您只想访问键入的内容,可以使用:

UmbracoContext.Current.ContentCache

这将允许你做这样的事情:

UmbracoContext.Current.ContentCache.GetAtRoot();

这将获得缓存的所有根内容

如果你有一个独立的项目,你想做Umbraco的东西,然后去nuget包管理器安装Umbraco.Core

这将只安装必要的Umbraco dll,然后你可以使用。

然后你只需要包含名称空间,你就可以开始了。