返回FileResult不会在IE9中获取MIME类型

时间:2013-02-18 13:37:10

标签: asp.net-mvc internet-explorer-9

我在控制器上有一个返回文件的方法

public FileResult DownloadFile(int id)
{
    var file = _repository.GetInidividualFile(id);
    return File(file.FileBinary, file.ContentType, file.FileName);
}

文件对象正在返回值,但IE9没有提取内容类型。我目前的文件类型列表是:

'应用/ PDF'

'应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet'

“应用/ vnd.ms-Excel的

所有其他浏览器似乎工作正常,但IE似乎忽略了扩展。我遇到的问题是,由于文件是在没有扩展名的情况下下载的,因此系统会提示用户选择要打开文件的应用程序,但他们不知道。

我尝试过firefox,chrome,safari和opera,一切都很好

以下是调试器的视图,显示了返回的值

debug

这是fiddler的输出,显示了内容类型:

HTTP / 1.1 200确定

服务器:ASP.NET Development Server / 10.0.0.0

日期:2013年2月19日星期二,格林尼治标准时间10:16:41

X-AspNet-Version:4.0.30319

X-AspNetMvc-Version:3.0

内容 - 处置:附件; filename =“配置工具”

缓存控制:私有

Content-Type:application / vnd.openxmlformats-officedocument.spreadsheetml.sheet

内容长度:491470

连接:关闭

1 个答案:

答案 0 :(得分:1)

经过一番捣乱,我终于发现了这是什么。 IE期望文件名的扩展,尽管具有内容类型。所以,

return File(file.FileBinary, "application/pdf", "test");

无效,但

return File(file.FileBinary, "application/pdf", "test.pdf");

确实