【问题标题】: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 阅读器的访问者来说是一个问题。基本上,用户单击下载链接,当前页面加载表明即将发生某些事情,但随后什么也没有打开。我是否正确地说 Adob​​e Acrobat 在寻找 .pdf 时遇到了 .ashx 扩展名的问题,所以它就放弃了?如果是这种情况,那么我该如何解决呢?

凯尔

【问题讨论】:

    标签: pdf adobe sitecore acrobat


    【解决方案1】:

    我相信这可能是一个常见问题。您使用的是哪个版本的 Sitecore? SDN上有各种讨论:

    我会检查你上面第一个链接中提到的 MIME 类型。

    【讨论】:

      【解决方案2】:

      只是一个旁注:

      Firefox for Mac 在直接处理 .ashx 文件(即直接链接到它们)时存在一般问题。

      这通常出现在 PDF 中,因为它会尝试打开 .ashx 文件而不检查内容配置。

      注意 Firefox 在 Mac 上的问题,因为 PDF 似乎无法在那里工作。

      为此,您需要根据以下内容设置一些东西:

      http://sdn.sitecore.net/scrapbook/media%20files%20downloaded%20with%20ashx%20extension.aspx

      如果你不能访问那基本上是告诉你去web.config,找到这个:

      <mediaType name="PDF file" extensions="pdf">
      

      并改变

      <forceDownload>false</forceDownload>
      

      <forceDownload>true</forceDownload>
      

      【讨论】:

        【解决方案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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多