当我使用Controller.File方法时,Action返回空白

时间:2015-10-23 18:56:00

标签: c# .net asp.net-mvc-4

我的PDF文件保存在我的服务器中。现在我尝试将此文件作为Content-Disposition = inline返回。

所以我写了这个:

public FileResult Test()
{
    var ms = new MemoryStream();

    using (var fs = new FileStream(@"C:\Users\Me\Desktop\test.pdf", FileMode.Open))
    {
        fs.CopyTo(ms);
    }

    ms.Position = 0;

    Response.AppendHeader("Content-Disposition", "inline; filename=test.pdf");

    return File(ms, "application/pdf");
}

但在我的浏览器(Chrome)中,我得到一个空的pdf。 我尝试了其他浏览器并得到了这个:

  • 即。 8(或更少) - 不要工作。
  • 即。 9 - 作品。
  • Chrome(46.0.2490.71) - 不要工作。
  • FireFox(32.0) - 作品。

我的应用程序中有另一个页面使用几乎相同的代码,适用于所有浏览器。

任何人都可以帮助我理解为什么在某些浏览器和其他浏览器中出现这种奇怪的行为?

更新
我试图在这段代码中更改我的PDF(比如相同的代码,但另一种是pdf),适用于所有浏览器。

因此PDF的内容可能导致了这种情况吗?我试过,在Adobe Reader和Win 8默认PDF阅读器中,这两个pdf都很好。

作为@Odrai请求,我也试过了:

Response.AppendHeader("content-disposition", "attachment; filename=test");

但是也没有工作并且改变了接收文件的方式(通过附件浏览器下载而不是打开文件)。我需要以内联模式打开。

作为@dustmouse请求,我试图直接在浏览器中打开pdf,并出现同样的问题。

所以现在我明白这不是一个程序问题,我打算关闭这个问题。但在此之前还有其他地方我可以提出这个问题(就像其他与stackoverflow相关的论坛,即代码审查或其他东西)?

1 个答案:

答案 0 :(得分:0)

正如here @AaronSieb中所解释的那样:

这似乎是最新版Chrome中的一个错误。它于2015年10月14日报道,并且似乎在最近的版本中得到修复。

对我来说,更新到Chrome 46.0.2490.80解决了这个问题。

来源:https://code.google.com/p/chromium/issues/detail?id=543018