C# 将PDF的Sitecore呈现从.ashx更改为DownloadMedia.aspx?media={GUID}

C# 将PDF的Sitecore呈现从.ashx更改为DownloadMedia.aspx?media={GUID},c#,pdf,sitecore,C#,Pdf,Sitecore,在我们的sitecore网站上,有两种方式将项目(文章)与相关媒体PDF项目关联: 一种方法是单击该内容项的内容值字段的RichTextEditor中的“插入Sitecore链接”按钮,这会产生如下结果: emad\u pdf\u test\u 1 emad\u pdf\u test\u 2 第二种方法是通过PDF字段(具有“打开文件”、“下载”、“查看文件”和“清除”选项)选择相关媒体PDF项目。这会产生如下结果: 下载PDF 第一种方式(#1)导致一些人在IE8和IE9中出现下载问题。无论如

在我们的sitecore网站上,有两种方式将项目(文章)与相关媒体PDF项目关联:

  • 一种方法是单击该内容项的内容值字段的RichTextEditor中的“插入Sitecore链接”按钮,这会产生如下结果:
  • emad\u pdf\u test\u 1

    emad\u pdf\u test\u 2

  • 第二种方法是通过PDF字段(具有“打开文件”、“下载”、“查看文件”和“清除”选项)选择相关媒体PDF项目。这会产生如下结果:
  • 下载PDF

    第一种方式(#1)导致一些人在IE8和IE9中出现下载问题。无论如何,经过一些痛苦的尝试和错误之后,我们决定将所有渲染为#1(.ashx)的地方改为渲染为#2(DownloadMedia.aspx?media={GUID})。我们知道,如果我们这样做,所有浏览器中的所有PDF下载都可以工作

    我们意识到这样做的一个后果是,如果我们在sitecore中实际删除一个相关的PDF媒体项,如果在RichTextEditor中,该PDF媒体项在DownloadMedia.aspx?media={GUID}格式中被引用,sitecore将不会警告断开的链接。有办法解决这个问题吗


    此外,将PDF的呈现方式从“.ashx”更改为“DownloadMedia.aspx”是否会对我们产生任何其他影响?

    您可以扩展媒体处理程序,以继续使用sitecore链接并强制下载


    通过标准Sitecore链接(和媒体处理程序)链接时,您可以更新默认的web.config以强制下载PDF文件。这意味着您在使用#1时无需更改任何链接方式

    对于OP的问题,即如何强制浏览器下载PDF文件,原始答案仍然是最佳选择,但这解决了他为什么在IE8/9浏览器上遇到问题的具体问题

    <mediaTypes>
      <mediaType name="PDF file" extensions="pdf">
        <mimeType>application/pdf</mimeType>
        <forceDownload>true</forceDownload> <!-- this value has changed -->
        <sharedTemplate>system/media/unversioned/pdf</sharedTemplate>
        <versionedTemplate>system/media/versioned/pdf</versionedTemplate>
      </mediaType>
    <mediaTypes>
    
    <setting name="Media.EnableRangeRetrievalRequest" value="false"/>