Html被添加到下载文件作为响应

时间:2009-11-04 09:32:52

标签: c# asp.net asp.net-3.5

我正在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 个答案:

答案 0 :(得分:8)

Response.End()之后调用Response.BinaryWrite,以防止将更多输出写入响应。

答案 1 :(得分:2)

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

CompleteRequest方法导致ASP.NET绕过HTTP管道执行链中的所有事件和过滤,并直接执行EndRequest事件。

Response.End方法结束页面执行并将执行转移到应用程序事件管道中的Application EndRequest事件。 <{1}}后面的代码行未执行。

这是一个很好的阅读:Don’t use Response.End() with OutputCache