我使用本指南安装了干净的 Sitecore 6.6 并启用了 MVC 支持。所以我的环境是 Sitecore 6.6、ASP .NET MVC 3 和 Razor、Microsoft SQL Server Express 2012、IIS 7.5,我使用的是 Microsoft Visual Studio 2012 Express for Web。我有以下代码:
@Model.PageItem.Fields["Title"];<br />
@Model.PageItem.Fields["Image"].GetValue(true, true);<br />
@Model.PageItem.Fields["Text"];<br />
Sitecore.Data.Items.MediaItem item = Model.PageItem.Fields["Image"].Item;
@Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl(item));<br />
结果很简单:
Sitecore
<image mediaid="{4DFD3ABC-0BC0-41D2-BD38-705946A1368A}" mediapath="/Images/xbox" src="~/media/4DFD3ABC0BC041D2BD38705946A1368A.ashx" />
<p>Welcome to Sitecore</p>
/sitecore/shell/~/media/110D559FDEA542EA9C1C8A5DF7E70EF9.ashx
当我导航到最后一行中指定的路径时,出现以下错误:
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
我尝试了几件事,例如:
- Web.config 中的 Media.UseItemPaths 更改为 trye(或 false) - 没有任何效果...
- Web.config 中的 Media.RequestExtension 设置为空(默认为 ashx)
- 我已将 ashx 添加到 Web.config 中的允许扩展(因为如果我不能拥有正常的扩展,我至少想要有工作的 ashx 链接)
- 我已将 ashx 添加到 IIS 7.5 -> 请求过滤 -> 文件扩展名
当然,在每次更改后(以防万一)我重新启动服务器并清除浏览器的缓存(实际上,在几次请求之后我禁用了 chrome 的缓存)。
我在 sdn.sitecore.net 上寻找解决方案,但没有运气。实际上,到目前为止,我已经花了 3 个多小时寻找解决方案,但无法弄清楚出了什么问题……任何帮助或建议表示赞赏!