使用asp.net中的csv文件进行响应

使用asp.net中的csv文件进行响应,asp.net,file,csv,response,Asp.net,File,Csv,Response,我试图从一个文本框中创建一个csv文件,然后将其发送给用户。这是我目前的代码: Response.Clear(); Response.ContentType = "text/csv"; Response.AppendHeader("Content-Disposition", string.Format("attachment; filename={0}", DateTime.Now)); R

我试图从一个文本框中创建一个csv文件,然后将其发送给用户。这是我目前的代码:

Response.Clear();
            Response.ContentType = "text/csv";
            Response.AppendHeader("Content-Disposition",
                string.Format("attachment; filename={0}", DateTime.Now));

            Response.Write(TextBox_Data.Text);
            Context.Response.End();
发送的是一个空xml文件,我以前从未尝试过用文件响应,我想知道它为什么会这样做

我还尝试了以下不起作用的方法:

var writer = File.CreateText("C:\\file.csv");
            writer.WriteLine(TextBox_Data.Text);

            Context.Response.Clear();
            Context.Response.AppendHeader("content-disposition", "attachment; filename=" + DateTime.Now + ".csv");
            Context.Response.ContentType = "text/csv";
            Context.Response.Write("C:\\file.csv");
            Context.Response.Flush();
            Context.Response.End();

如果您有答案,请告诉我:)

以下代码适用于我。您可能只是缺少一个文件扩展名

Response.Clear();
Response.ContentType = "text/csv";
Response.AppendHeader("Content-Disposition",
                string.Format("attachment; filename={0}.csv", DateTime.Now));
Response.Write(TextBox_Data.Text);
Context.Response.End();

只是对joshb关于Response.End()用法的回答的补充:

MSDN在非错误情况下使用
Response.End()
,在某些情况下,它实际上会导致客户端丢失一些数据

在我的例子中,有时下载的csv会丢失最后一行的最后字节,因此我删除了
Response.End()
,并使用

    HttpContext.Current.ApplicationInstance.CompleteRequest()
相反,我必须重写页面的
Render(HtmlTextWriter)
方法,以不对请求写入任何内容,因为csv已经写入

public class PageBase : Page
{
    private bool performRegularPageRender = true;

    protected override void Render(HtmlTextWriter writer)
    {
        if (performRegularPageRender)
            base.Render(writer);
    }

    public void SkipRegularPageRendering()
    {
        performRegularPageRender = false;
    }
}
更多信息/学分:
; ;

您正在尝试根据用户在文本框中输入的内容创建CSV文件,然后通过电子邮件发送给用户,或者让用户自动下载?除了这段代码,你能给我们提供更多关于如何和为什么的上下文吗?试着用另一条路径写。也许是你的个人资料路径。写入根目录是危险的。事实上,我正试图从多行文本框中创建一个可下载的CSV文件:)事实上,我不在乎将文件放在我的驱动器上,我只想要一个可下载的CSV文件,带有文本框中的文本。写入根目录不仅危险,但是,除非您明确授予应用程序池标识这样做的权限,否则它将因安全原因而失败。另一方面,datetime的tostring()会创建一个带有空格的字符串。空格会使文件丢失其类型(也会丢失日期时间的小时和分钟数。请记住,此代码不会处理转义字符之类的事情,但我认为这是您所期望的。啊…我编写了如下扩展名(“附件;文件名={0}”,datetime.Now+“.csv”);这在我的家用电脑上运行非常好,非常感谢!