启用缓存时,在IE中下载文件不起作用

时间:2011-01-26 23:45:44

标签: asp.net-mvc internet-explorer download outputcache

我正在尝试修复从ASP.NET MVC应用程序中无法在IE中运行的文件下载问题。

控制器操作如下所示:

    [HttpGet]
    [OutputCache(Duration = 0, NoStore = true, VaryByParam = "*")]
    public FileResult GetTemplate(int id)
    {
        var data = GetData(id);

        return File(Encoding.ASCII.GetBytes(data), MimeType.Csv.Type, "template.csv");
    }

使用javascript中的window.open()调用启动下载。它在Firefox中运行良好,但不适用于IE。 IE download error

如果我删除OutputCache属性,那么它在IE中工作正常。

为什么OutputCache行会破坏IE中的下载?

2 个答案:

答案 0 :(得分:1)

要回答你的最后一个问题,你正在寻找解释,这是:

http://support.microsoft.com/kb/323308

这实际上是IE中的一个错误。

答案 1 :(得分:0)

两种可能性:

  1. 请勿使用window.open,而应使用简单的下载链接
  2. 使用application/octet-stream

    return File(
        Encoding.ASCII.GetBytes(data), 
        "application/octet-stream", 
        "template.csv"
    );