【问题标题】:Sitecore image has "/sitecore/shell" in the path for some imagesSitecore 图像在某些图像的路径中有“/sitecore/shell”
【发布时间】:2021-12-07 00:02:41
【问题描述】:

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

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

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

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

对于其他人,它返回为: /sitecore/shell/-/media/image.png

是什么导致额外的“/sitecore/shell”附加到图像路径?

【问题讨论】:

    标签: c# sitecore


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多