我正在编写一个简单的测试页面,通过点击按钮从浏览器下载文本文件。我犯了一个非常奇怪的错误,这是我以前从未见过的。有什么想法吗?
错误发生在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();
}
错误:
无法计算表达式,因为代码已优化,或者本机帧位于调用堆栈的顶部。
尝试将其更改为.
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();
如果您对下载的文件名有问题,只需对上述解决方案稍作补充。。。
Response.AddHeader("Content-Disposition", "attachment; filename="" + file.Name + """);
这将返回准确的文件名,即使其中包含空格或其他字符。