我最终要做的是访问CacheSettingsPart
,以便我可以通过编程方式将一些被忽略的URL添加到输出缓存配置中。
相关的管理员已经通过以下方式实现了这一目标:
var settings = Services.WorkContext.CurrentSite.As<CacheSettingsPart>();
settings.IgnoredUrls = model.IgnoredUrls;
我需要类似于我自己的方法,但当我尝试注入IOrchardServices
时,WorkContext
为null
,这意味着我无法访问CurrentSite
}。
我需要通过替代方法实现此目标的建议,或者理想情况下,我需要一种方式来访问CurrentSite
/ CacheSettingsPart
以修改IgnoredUrls
。
var query = Services.ContentManager.Query<CacheSettingsPart>();
var cacheSettingsPart = query.List().First();
以上似乎给了我所需要的东西,我现在将测试修改IgnoredUrls
是否仍然存在。
答案 0 :(得分:3)
就我所见,WorkContext尚未在迁移运行时创建。
你可以按照你的建议获得第一个SettingsPart - 它可能不会被用于除当前网站之外的任何东西,但如果你有多个租户,那么我认为你可能会遇到麻烦。
另一种方法是将ISiteService
注入您的迁移类。
然后你可以做
var site = _siteService.GetSiteSettings();
var cacheSettings = site.As<CacheSettingsPart>();
答案 1 :(得分:0)
var query = Services.ContentManager.Query<CacheSettingsPart>();
var cacheSettingsParts = query.Slice(1);
if(cacheSettingsParts.Any())
{
_signals.Trigger(CacheSettingsPart.CacheKey);
cacheSettingsParts.First().IgnoredUrls = "/dans-test";
}
上述作品,但我感谢它可能不是最好的方法,所以我可以接受其他建议。