我正在asp.net中下载文件 这是代码
Response.ContentType = "Application/.pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename="+extractFileName+".pdf");
Response.TransmitFile(extractFilePath);
Response.Flush();
Response.End();
文件正在正常下载,但在Response.End();
它会抛出以下异常:
{Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.}
答案 0 :(得分:0)
提供的消息不是异常,而是一条消息,指示由于编译器执行的优化以及由于当前代码位置而无法显示错误。
尝试删除response.End并查看是否允许您查看错误。
答案 1 :(得分:0)
有几个问题。
我认为主要问题是您将extractFileName
用于在浏览器中打开/保存文件的名称,以及要传输的文件的物理名称。因此,当您只需要文件名时,您要么使用content-disposition
的完整路径...或者您没有为传输提供完整路径。
您还使用了不正确的MIME Type PDF格式,application/pdf
(你还在.pdf
的末尾包括extractFileName
,所以我假设变量还没有包含扩展名吗?)
如果extractFileName
是文件的完整物理路径(包括扩展名),请尝试替换...
Response.AppendHeader("Content-Disposition", "attachment; filename="+extractFileName+".pdf");
...与
string contentFileName = System.IO.Path.GetFileName(extractFileName);
Response.AppendHeader("Content-Disposition", "attachment; filename="+contentFileName);
答案 2 :(得分:0)
TransmitFile()不能用于您网站目录结构之外的文件。在这种情况下,使用另一种方法将文件写入Response。
注: 如果文件名包含多个点(。)或逗号(,)之类的字符,则某些浏览器会弄乱文件名。在文件名中添加额外的引号以避免出现问题。
Response.AppendHeader("content-disposition", "attachment; filename=\"" + file + "\";");