我正在编写一个简单的测试页面,通过点击按钮将文本文件下载到浏览器。我得到了一个我从未见过的非常奇怪的错误。有什么想法吗?
'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();
}
错误:
无法评估表达式,因为代码已优化或本机框位于调用堆栈之上。
答案 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 + "\"");
即使它包含空格或其他字符,也会返回确切的文件名。