Asp.net mvc 在IE中下载文件不会';启用缓存时无法工作

Asp.net mvc 在IE中下载文件不会';启用缓存时无法工作,asp.net-mvc,internet-explorer,download,outputcache,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.Ge

我正在尝试修复从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中不起作用。

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

为什么OutputCache行会中断IE中的下载?有两种可能性:

  • 不要使用
    窗口。只打开一个简单的下载链接
  • 使用
    应用程序/octet流

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

  • 要回答您的最后一个问题,您需要一个解释,如下所示:


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

    我将
    OutputCacheAttribute
    行更改为
    [OutputCache(Duration=1200,Location=OutputCacheLocation.Client,VaryByParam=“*”,NoStore=false)]
    。虽然我的问题仍然存在,但我不是在寻找解决方案或解决办法。我正在试图理解为什么它在IE中不起作用,并且正在寻找一个解释。