【发布时间】:2011-04-07 10:32:34
【问题描述】:
我正在从网站下载文本,我希望用户能够将其保存为文件。所以,我有以下代码可以做到这一点。
protected void DownloadFile(string fileName, string content)
{
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.ContentType = "text/plain";
Response.Write(content);
Response.End();
}
我遇到的问题是这段代码运行后出现异常。我相信这是因为我调用了 Response.End()。因此,每次用户下载文件时,它都会将他们重定向到通用错误页面,因为所有通用异常都会重定向到该页面。
关于如何将文本写入文件而不出现此错误的任何想法?如果我删除 Response.End() 我得到我的文本,然后是 HttpResponse 文本的其余部分,但我没有得到错误。
谢谢。
【问题讨论】:
-
你可以在catch()中捕获异常而不做任何事情
-
这就是我现在的处理方式,但如果没有必要,我宁愿不吃异常。所以,我只是想找到一种不同/更好的方法来实现这一点。
-
为什么要调用 Reponse.End()?您似乎是从 ASP.NET WebForm 调用此方法。确实如此,只要让 ASP.NET 管道在响应实际结束时关闭响应流。
-
永远不要吃异常而不至少在某处记录它。至少,使用 Elmah (code.google.com/p/elmah) 将异常记录到数据库中。
-
你遇到了什么异常?