Autofac - 注入 UmbracoContext.ContentCache

Autofac - injecting UmbracoContext.ContentCache

在我的一个项目中,我使用了多个存储库,其中之一是 Umbraco 内容缓存。虽然我认为这是保持网站与 Umbraco 松散集成的好方法,但我遇到了一个问题:将 UmbracoContext.ContentCache 从控制器注入到存储库,因为 UmbracoContext.ContentCache 仅在页面请求生命周期。有人试过这样做吗?或者这似乎是一个糟糕的方法?我正在为 DI 使用 Autofac。

设法找到解决方案。我想知道 contentCache 引用应该在请求的上下文之外可用。看看这里的代码 https://github.com/umbraco/Umbraco-CMS/blob/4a101786972bb591bb5d22acd043cc9f9da267ed/src/Umbraco.Web/UmbracoContext.cs

我发现这是将 contentCache 注入存储库的方法:

builder.Register(
            ctx => new UmbracoContentCacheWrapper(global::Umbraco.Web.UmbracoContext.Current.ContentCache)).InstancePerHttpRequest()
            .As<IContextualPublishedContentCache>();

大家周五快乐!

因为UmbracoContext.Current是页面生命周期中的单例集,所以你应该只需要将Umbraco.Core添加到你的存储层并使用单例访问缓存。无论如何,所有这一切都已经发生了,不需要再依赖 autofac 来做。

此外,虽然我不确定这是否是正确的方法,但我使用 autofac 注册了 UmbracoHelper,它可以访问类型化和动态缓存。

builder.Register(c => new UmbracoHelper(UmbracoContext.Current));