代码之家  ›  专栏  ›  技术社区  ›  pythonandchips

正在添加HTML以响应下载文件

  •  3
  • pythonandchips  · 技术社区  · 15 年前

    我正在我的ASP.NET Web应用程序中动态创建一个csv文件,并使用以下代码将其发送回用户

    ExportPlacementListPostModel postModel = CreatePostModelFromRequest();
    MemoryStream stream = PlacementDatabaseController.ExportPlacementList(postModel);
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.AddHeader("content-disposition", "attachment; filename=studentplacement.csv");
    Response.ContentType = "application/octet-stream";
    Response.BinaryWrite(stream.GetBuffer());
    

    每次下载文件时,网页HTML都会被附加到文档中。

    有人能看看我在这里做错了什么吗?

    科林G

    2 回复  |  直到 15 年前
        1
  •  8
  •   pmarflee    15 年前

    呼叫 Response.End() 之后 Response.BinaryWrite 以防止进一步输出写入响应。

        2
  •  2
  •   o.k.w    15 年前

    HttpContext.Current.ApplicationInstance.CompleteRequest 也可以使用。

    这个 CompleteRequest 方法使ASP.NET绕过HTTP管道执行链中的所有事件和筛选,并直接执行 EndRequest 事件。

    这个 Response.End 方法结束页面执行并将执行转移到 Application EndRequest 应用程序的事件管道中的事件。下面的代码行 响应结束 未执行。

    这是一本好书: Don’t use Response.End() with OutputCache