Sitecore媒体src路径错误?

时间:2013-11-04 06:38:36

标签: sitecore sitecore7

我刚刚将Sitecore 6.5解决方案升级到Sitecore 7.这是一个非常基本的网站,所以没有重大问题。 我遇到了一个问题。

我希望在xslt中获取图像项的src。我是这样做的;

sc:fld('myImage',.,'src')

此输出为~/media/folder/myimage.ashx

但由于某些原因,这不起作用 - 意味着没有显示图像。当我复制src并尝试直接在新选项卡中打开i时,我会被重定向到Sitecore登录。并且图像上没有安全设置。

然后我发现,例如,当使用sc:image时,我得到另一个src,它有效: /sitecore/shell/~/media/folder/myimage.ashx 但上述对我来说不合适?

发生了什么,我该如何解决?除了网站定义和数据文件夹路径之外,我在web.config中没有更改任何内容。否则它完全是库存。

3 个答案:

答案 0 :(得分:4)

使用斜杠'/'作为sc:fld的输出前缀,以便完整路径变为

/~/media/folder/myimage.ashx

答案 1 :(得分:0)

现在您可以使用sc:field代替sc:fld,您将获得友好的网址

答案 2 :(得分:0)

对于大家来说,这通常是一个混乱点,所以让我们来看看Sitecore生成和处理媒体请求的方式。这将使您了解它如何在sc:field()的“引擎盖下”工作。

首先,检查您的配置。 MediaLinkPrefix指定HTML呈现时的媒体前缀。

<setting name="Media.MediaLinkPrefix" value="~/media/" />

第二步,只要HTML形成并且链接在href属性中包含您想要的媒体前缀,您的进一步步骤就是设置处理这些链接的处理程序。可以在customHandlers节点中的以下配置设置中完成:

<handler trigger="~/media/" handler="sitecore_media.ashx" />

最后,您需要将处理程序与将为您的请求提供服务的确切代码相关联。比在httpHandlers节点中配置,如下所示:

<add verb="*" path="sitecore_media.ashx" type="Namespace.ClassName, YourLibrary" />

如果您的MediaPrefix正在生成相对链接,请确保生成的路径是正确的网站根目录。用'/'开始相对路径将确保。

希望这能很好地解释这个机制,但是请随意询问有关它如何在Sitecore中运行的进一步问题。

干杯!