从网页下载文本作为文件

时间:2010-09-02 16:10:11

标签: c# asp.net

我正在从网站下载文字,我想让用户能够将其保存为文件。所以,我有以下代码可以做到这一点。

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文本,但我没有得到错误。

感谢。

3 个答案:

答案 0 :(得分:1)

首先,如果此代码在.ASPX文件中,则需要将其移出到.ASHX文件。 其次,在你转移到.ASHX后,你可以简单地写入输出流并完成,你不应该需要Response.End();

这是我开始使用的链接:http://dotnetperls.com/ashx-handler - 没有太多内容。它只是删除了一堆asp.net“页面”开销。


理想情况下,您应该有一个包含列表的页面,以及“download.ashx”文件的链接/按钮。然后在查询字符串上传递一个记录ID,以便它可以执行查找和响应.write调用。

答案 1 :(得分:0)

也许你想打电话给Response.Output.Write()

答案 2 :(得分:0)

请勿致电Response.End()。在填写标题之后,无论您是否打算,仍然存在要在服务器端运行的代码。而是考虑使用Response.Flush()并允许页面完成。另一种方法是使用HttpHandler(ashx)文件而不是aspx / ascx文件。这将为您提供对响应的更基本访问,因此您应该能够在没有反响的情况下结束。