我正在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答案 0 :(得分:8)
在Response.End()
之后调用Response.BinaryWrite
,以防止将更多输出写入响应。
答案 1 :(得分:2)
HttpContext.Current.ApplicationInstance.CompleteRequest
也可以使用。
CompleteRequest
方法导致ASP.NET绕过HTTP管道执行链中的所有事件和过滤,并直接执行EndRequest
事件。
Response.End
方法结束页面执行并将执行转移到应用程序事件管道中的Application EndRequest
事件。 <{1}}后面的代码行未执行。