23

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

发生错误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();
  }

错误:

无法计算表达式,因为代码已优化或本机框架位于调用堆栈顶部。

4

2 回答 2

40

尝试将其更改为。

 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();
于 2012-01-17T15:55:58.173 回答
8

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

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

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

于 2013-07-25T17:11:44.673 回答