2009-11-04 65 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