MVC3返回文件操作导致间歇性的Excel程序错误

我有一个与此问题密切相关的问题Microsoft Excel错误:“发送命令到程序时出现问题。 从而打开Excel给出了There was an error sending a command to the program错误。

但是,而不是文件存在和正在打开或快捷方式, 我正在使用MVC3与一个动作,产生一堆数据, 生成一个Excel文件 (使用NPOI ),写入一个MemoryStream,然后卡到浏览器使用内置的return File(etc) ActionResult,类似的东西(但缩短在这里,以帮助可读性):

 return File(myMemoryStream, "application/vnd.ms-excel", "filename.xls"); 

你第一次点击链接,触发这个动作,并返回这个文件 – 它出现了错误。 如果你按OK,再试一次就行了,而且会继续工作…永远

现在我知道这可能是与禁用DDE /插件或Excel中的东西有关 – 但由于我生成一个Excel工作簿并将其转储到内存stream而不是打开永久存在于文件系统上的东西, 不知道我有什么select来消除这个问题。

有关如何避开它的任何build议? 也许我有错误的MIMEtypes?

Content-Type应用程序/ vnd.ms-excel正在将命令发送到浏览器以在浏览器中打开该文件。 这可能是问题的原因。 尝试将内容types设置为application / x-msexcel。

在您的示例中,浏览器将尝试在浏览器中打开Excel电子表格(如果用户安装了Excel)。

 return File(myMemoryStream, "application/vnd.ms-excel", "filename.xls") 

请进行以下更改

 return File(myMemoryStream, "application/x-ms-excel", "filename.xls")