当我'm使用控制器时,操作返回空.文件的方法

本文关键字:返回 操作 文件 方法 控制器 当我 | 更新日期: 2023-09-27 18:19:10

我在服务器上保存了一个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(或更少)-不工作
  • Chrome(46.0.2490.71) -不工作。
  • FireFox (32.0) - Works.

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

谁能帮我理解为什么这种奇怪的行为在一些浏览器和其他没有?


我试图改变我的PDF在这个代码(像相同的代码,但另一个PDF),并适用于所有浏览器。

那么有可能是PDF的内容造成的吗?我试过了,两个PDF文件在adobereader和win8默认PDF阅读器中都可以正常打开。

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

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

但是也不起作用,并且改变了接收文件的方式(带有附件的浏览器进行下载而不是打开文件)。我需要以内联模式打开。

作为@dustmouse请求,我试图直接在浏览器中打开pdf文件,同样的问题发生了。

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

当我'm使用控制器时,操作返回空.文件的方法

正如@AaronSieb在这里解释的:

这似乎是Chrome最新版本中的一个错误。该问题在2015年10月14日被报告,并在最近的版本中被修复。

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

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