在另一个程序集中访问 Umbraco.TypedContentAtRoot()

Accessing Umbraco.TypedContentAtRoot() in another assembly

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

关于最简单的方法有什么想法吗?我已经尝试引用各种 Umbraco 程序集并深入研究现成的程序集,但还没有发现任何立即有用的东西。

我偶然发现了

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

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

任何人都可以指出我正确的方向吗?提前致谢!

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

这将只安装您随后可以使用的必要 Umbraco dll。

然后您只需要包含命名空间就可以开始了。

假设您正在创建的 DLL 将在 umbraco 站点中使用,您将能够在您的 类 中访问 UmbracoContent.Current,只要您有对Umbraco.Core 包,如 Mivaweb 所述。

另一方面,如果您想从一个完全不相关的外部应用程序(比如一个可执行文件)访问 UmbracoContext,那就更难了。一些人已经开始工作了,但它有点古怪。通常在这种情况下,你最好添加某种 WebAPI 控制器操作,你可以通过 HTTP 从你的可执行文件调用它,这样你就可以完全访问网站上的 Umbraco。

更新:

如果您只想访问键入的内容,您可以使用以下方法获取:

UmbracoContext.Current.ContentCache

这将允许您执行以下操作:

UmbracoContext.Current.ContentCache.GetAtRoot();

这将为您获取缓存的所有根目录内容。