Asp.net mvc MVC:将.xlsx文件作为保存的文件返回下载,而不是在Excel中打开

Asp.net mvc MVC:将.xlsx文件作为保存的文件返回下载,而不是在Excel中打开,asp.net-mvc,mime-types,epplus,Asp.net Mvc,Mime Types,Epplus,我正在使用EPPlus生成一个Excel文件,我希望下载该文件的用户被提示保存该文件,而不是立即在Excel中打开该文件。我如何在MVC中做到这一点 以下是我当前的代码: [HttpGet] public ActionResult DownloadData() { byte[] excelData = ExportService.GetServiceTrackerDataAsExcelData(); return File(excelDat

我正在使用EPPlus生成一个Excel文件,我希望下载该文件的用户被提示保存该文件,而不是立即在Excel中打开该文件。我如何在MVC中做到这一点

以下是我当前的代码:

    [HttpGet]
    public ActionResult DownloadData()
    {
        byte[] excelData = ExportService.GetServiceTrackerDataAsExcelData();
        return File(excelData, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", String.Format("ServiceTrackerData-{0}.xlsx", DateTime.Now.ToString("yyyy-MM-dd")));
    }
你不能


您已经告诉浏览器该文件是附件,因此浏览器将从外部处理它。默认情况下,大多数浏览器都会显示一个对话框,要求打开或保存。但是,用户可以选择将Excel文件设置为自动打开(通常是“下次自动打开”复选框)。如果用户选择在excel中自动打开,则您不能覆盖它。

这会在我的浏览器中导致“从服务器接收到重复的标题”错误。在该实例中,我如何抑制由MVC生成的原始头?事实上,该头已经是由我的原始代码以任何方式生成的确切头。实际上您所做的是正确的,您传递的最后一个参数是文件名,因此它应该显示“另存为”对话框。您是否在不同的浏览器或不同的计算机上尝试过此操作,可能客户端上安装了一个工具,这就是原因。请尝试将内容类型设置为application/octet Stream我猜您不知何故取消选中了“在打开此类型的文件之前始终询问”一次又一次,它直接打开,而不是显示下载对话框?要删除右键单击下载链接,请将目标另存为,然后选中“在打开此类文件之前始终询问”
Response.AddHeader("content-disposition", "attachment;filename=ServiceTrackerData.xslx")