在asp.net中下载PDF文件时出现异常

时间:2015-03-04 11:35:36

标签: asp.net

我正在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.}

3 个答案:

答案 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 + "\";");