Sitecore 图像在某些图像的路径中具有"/sitecore/shell"



我使用以下代码获取Sitecore 中图像项的路径

Sitecore.StringUtil.EnsurePrefix('/',
HashingUtils.ProtectAssetUrl(MediaManager.GetMediaUrl(imgMediaItem));

对于某些项目,我得到路径正确的

e.g.: -/media/image.jpg

对其他人来说,它的回报是:/sitecore/shell/-/media/image.png

是什么导致了额外的"/sitecore/shell";附加到图像路径?

这取决于呈现媒体URL时上下文站点(Sitecore.Context.Site(是什么。不幸的是,Sitecore需要很多从静态属性创建url所需的参数,因此根据您所处的上下文,您可能会得到不同的结果。在呈现常规页面时,这通常不是问题,但在后台作业等中构建链接时会导致问题。此问题适用于更多领域,例如同样存在此问题的LinkManager。

要解决此问题,可以向GetMediaUrl提供MediaUrlBuilderOptions参数,在其中指定所需的参数,例如Site

或者,您可以使用带有SiteContextSwitcherLanguageSwitcher等的语句来包装代码,以确保代码在静态属性具有适当值的上下文中运行。

同样值得注意的是,Sitecore中的这种行为并不总是糟糕的。由于shell网站需要登录并使用master作为内容数据库,因此在某些情况下,这可能是有益的,例如在查看未发布的内容时。

最新更新