ASP.Net将文件下载到客户端浏览器

时间:2012-01-17 15:42:46

标签: asp.net browser download response.write

我正在编写一个简单的测试页面,通过点击按钮将文本文件下载到浏览器。我得到了一个我从未见过的非常奇怪的错误。有什么想法吗?

'Response.End();'发生错误并且文件永远不会到达客户端浏览器

代码:

  string filePath = "C:\\test.txt";
  FileInfo file = new FileInfo(filePath);
  if (file.Exists)
  {
    Response.ClearContent();
    Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
    Response.AddHeader("Content-Length", file.Length.ToString());
    Response.ContentType = "text/plain";
    Response.TransmitFile(file.FullName);
    Response.End();
  }

错误:

  

无法评估表达式,因为代码已优化或本机框位于调用堆栈之上。

2 个答案:

答案 0 :(得分:33)

尝试将其更改为。

 Response.Clear();
 Response.ClearHeaders();
 Response.ClearContent();
 Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
 Response.AddHeader("Content-Length", file.Length.ToString());
 Response.ContentType = "text/plain";
 Response.Flush();
 Response.TransmitFile(file.FullName);
 Response.End();

答案 1 :(得分:8)

如果您遇到下载文件名称的问题,只需对上述解决方案稍加补充......

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + file.Name + "\"");

即使它包含空格或其他字符,也会返回确切的文件名。