2013-03-24 56 views
0

我從頁面上的鏈接生成CSV並將其發回給用戶。我希望維護頁面上下文。此代碼完美適用於我的2008 Dev框中的IE,Chrome和Firefox,但是在Vista,Win 7或Win 8上運行時,該文件具有附加頁面的HTML。Response.Flush在Windows Vista,7,8,但不是在Server 2008上寫頁面的HTML

我對傳遞文件的方法做了一些公正的閱讀,並得出結論認爲response.flush()是最好的方法。

 // Convert to Bytes for Binary Write 
     Byte[] bytes = Utils.Instance.ReadStreamToByte(streamWriter.BaseStream); 

     // Call ContentType followed by clear so no extraneous content is sent. see http://msdn.microsoft.com/en-us/library/system.web.httpresponse.aspx 
     HttpContext.Current.Response.ContentType = "text/csv"; 
     HttpContext.Current.Response.Clear(); 
     HttpContext.Current.Response.AppendHeader("content-length", bytes.Length.ToString()); 
     HttpContext.Current.Response.AppendHeader("content-Disposition", "attachment;filename=" + "MyAccount Sales Report " + MonthDDL.SelectedItem.Text + "-" + YearDDL.SelectedItem.Text + ".csv"); 
     HttpContext.Current.Response.BinaryWrite(bytes); 
     HttpContext.Current.Response.Flush(); 

我查找了爲什麼發生這種情況,還沒有找到任何相關的幫助。我確實改變了Clear()的位置;按照上面評論中列出的微軟文章,但這沒有任何影響。

回答

0

在刷新後添加了Response.End(),並且它看起來對事件發佈後頁面的操作沒有不利影響。有點神祕仍然爲什麼Server 2008的行爲不同!

相關問題