2009-11-04 52 views
2

我创建在我的ASP.NET web应用程序飞一个CSV文件,使用下面的代码的HTML文件下载响应

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文件被附加到文件上。

任何人都可以看到我在做什么错在这里。 Response.BinaryWrite

科林ģ

回答

8

呼叫Response.End()以防止进一步的输出被写入到响应。

+0

从pmarflee到Response.End的()答案很可能是合适的,但我相信你也可以这样做:回报; – 2009-11-04 09:41:32

+0

任何想法为什么这会发生在一台服务器上,但不是另一台? – Wjdavis5 2017-09-07 15:47:12

1

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

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

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

这里有一个很好看的:Don’t use Response.End() with OutputCache