2012-02-20 106 views
6

以下代碼(ContentType行)出現錯誤(服務器無法在發送HTTP標頭後設置內容類型)。我應該改變什麼?服務器在發送HTTP標頭後無法設置內容類型

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
response.ClearContent(); 
response.ContentType = "text/plain"; 
response.AddHeader("Content-Disposition", "attachment; filename=" + System.IO.Path.GetFileName(PervasiveConstants.DownloadZipLocation) + ";"); 
response.TransmitFile(PervasiveConstants.DownloadZipLocation); 
response.Flush(); 
response.End(); 

這是在Sharepoint 2010 webpart中。

+1

這是所有服務器的一般「問題」。一旦程序開始生成內容,標題應發送給客戶端,無法更改。 爲了在程序中的任何位置設置標題,您需要啓用輸出緩衝或稍微。它在Apache/php中被稱爲「輸出緩衝」,但在其他服務器中應該有類似的東西。 – kirilloid 2012-02-20 12:14:19

+1

爲什麼從'ClearContent'開始?如果響應已經*有*內容,那麼你的代碼可能在這個過程中運行得太晚了。 – 2012-02-20 13:17:05

回答

5

嘗試設置response.BufferOutput = true;。在設置response變量後立即執行此操作。

+1

我用 ** System.Web.HttpResponse響應= System.Web.HttpContext.Current.Response; ** ** = Response.BufferOutput真實; ** 但我仍然得到同樣的錯誤。 – 2016-02-04 08:15:08

1

我有一個非常類似的問題,這在網絡上。我在後面的代碼中加入以下代碼到我的按鈕解決了這個問題:

ScriptManager.GetCurrent(this).RegisterPostBackControl(btnPrint); 
-1

我有同樣的問題,以下解決方案解決了這個問題, 運行response.AddHeader(

0

該解決方案之前運行response.ClearHeaders();爲我工作, 在方法開始處添加此行代碼,

Server.ClearError(); 
相關問題