【问题标题】:CSV file is not downloading in asp.net because Respose.Write isn't workingCSV 文件未在 asp.net 中下载,因为 Respose.Write 不起作用
【发布时间】:2016-09-12 21:26:25
【问题描述】:

我正在使用 StringBuilder 创建一个 CSV 文件,并且我正在尝试使用以下代码下载该文件:

Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=Report.csv");
Response.Charset = "utf-8";
Response.ContentType = "text/csv";
Response.Output.Write(sb.ToString());
Response.Flush();
Response.End();

我在其他项目中使用相同的代码没有问题,但是在这个项目中,当我单击Export button 时,代码被执行但没有任何反应,没有异常,没有错误,没有。

还可以尝试以下操作:Response.Write(sb.ToString()); 还有"application/text"application/csv

任何人都可以指出正确的方向以使其发挥作用吗?

更新

由于某种我还不明白的原因,Response.Output.WriteResponse.Write 无法正常工作,因为我什么也得不到,甚至没有一个字符串或 javascript 警报。

有什么想法吗?

【问题讨论】:

    标签: c# asp.net csv webforms


    【解决方案1】:

    删除这一行

    Response.Flush();
    

    因为你的Response.Buffer = true

    并使用

    Response.Write(sb.ToString());
    Response.End();
    

    【讨论】:

    • 还是一样,什么都没有发生
    • 显然 Response.Output.WriteResponse.Write 由于某种原因无法正常工作,因为我什么也得不到,甚至连一个字符串或 javascript 警报都没有。
    【解决方案2】:

    使用此代码。此代码将为您工作:

    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition","attachment;filename=YourFileName.csv");
    Response.Charset = "utf-8";
    Response.ContentType = "application/text";
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    {YourControlId}.RenderControl(hw);
    Response.Output.Write(sw.ToString());
    Response.Flush();
    Response.End();
    

    【讨论】:

    • 还是一样,显然 Response.Output.WriteResponse.Write 由于某种原因无法正常工作,因为我什么也得不到,甚至连一个字符串或 javascript 警报都没有。
    • 你有没有用 try-catch 块包围你的代码并检查是否引发了异常?
    猜你喜欢
    • 2017-10-19
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2021-09-06
    • 1970-01-01
    相关资源
    最近更新 更多