【问题标题】:PDF's converted to .ashx in sitecore failing to open using IEPDF 在 sitecore 中转换为 .ashx 无法使用 IE 打开
【发布时间】:2011-07-26 03:01:31
【问题描述】:
与 Sitecore 中的所有媒体文件一样,扩展名被转换为 .ashx,这对使用 IE 和 acrobat 阅读器的访问者来说是一个问题。基本上,用户单击下载链接,当前页面加载表明即将发生某些事情,但随后什么也没有打开。我是否正确地说 Adobe Acrobat 在寻找 .pdf 时遇到了 .ashx 扩展名的问题,所以它就放弃了?如果是这种情况,那么我该如何解决呢?
凯尔
【问题讨论】:
标签:
pdf
adobe
sitecore
acrobat
【解决方案1】:
我相信这可能是一个常见问题。您使用的是哪个版本的 Sitecore? SDN上有各种讨论:
我会检查你上面第一个链接中提到的 MIME 类型。
【解决方案3】:
true 将强制任何类型的浏览器下载 pdf...
这是最终的解决方案:
创建一个 C# 类
public class MediaHandler : MediaRequestHandler
{
public override void ProcessRequest(HttpContext context)
{
DeterminePDFRequest(context);
base.ProcessRequest(context);
}
private static void DeterminePDFRequest(HttpContext context)
{
MediaRequest request = MediaManager.ParseMediaRequest(context.Request);
if (request != null)
{
Media media = MediaManager.GetMedia(request.MediaUri);
if (media != null)
{
Item item = media.MediaData.MediaItem;
MediaItem mediaItem = media.MediaData.MediaItem;
if (mediaItem != null)
{
if (context.Request.UserAgent != null)
{
if (mediaItem.Extension != "pdf")
return;
string requestedUrl = context.Items["SC_REQUEST_MEASUREMENT_URL"].ToString();
if (!requestedUrl.Contains(".pdf"))
{
MediaUrlOptions mediaUrlOptions = new MediaUrlOptions
{
AbsolutePath = true,
DisableMediaCache = true,
DisableBrowserCache = true
};
string url = StringUtil.EnsurePrefix('/',
MediaManager.GetMediaUrl(mediaItem,
mediaUrlOptions));
url = url.Replace(".ashx", ".pdf");
QueryString queryString = new QueryString(url);
context.Response.Redirect(queryString.All);
}
}
}
}
}
}
}
确保替换和更新 web.config 中的 verb="*" path="sitecore_media.ashx" 以使用您的 MediaHandler