我有一个应该传输文件的页面
所有代码都包含在 try / catch 异常块中
我使用 Response.TransmitFile 来实际写入文件,当它失败时(在我的情况下由于权限问题),对客户端的响应是一些自动生成的 html,其中详细说明了错误,其中一部分说:“生成了未处理的异常在执行当前 Web 请求期间。”
为什么它说未处理的异常?
我发现了错误,因为标题已更改为 text/html 而不是八位字节流,如果文件成功继续,它将被设置为。但似乎对 TransmitFile 的调用将自己的内容写入响应,然后刷新它,这确实是不可取的!
我能做些什么?
try
{
String targetFile = Request.Form["filePath"];
if (targetFile == null) throw new Exception("No filename provided");
FileInfo file = new FileInfo(targetFile);
if (!file.Exists)
{
// file not found error
throw new Exception("File not found");
}
Response.ContentType = "APPLICATION/OCTET-STREAM";
Response.AppendHeader("Content-Disposition", "Attachment; Filename=\"" + Path.GetFileName(targetFile) + "\"");
Response.TransmitFile(file.FullName);
}
catch (Exception e)
{
Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "text/html";
StringBuilder sb = new StringBuilder();
// I write my own response in sb - I never see this content sent back!!
Response.Write(sb.ToString());
Response.Flush();
}