2011-11-03 74 views
0

我發送大量的Excel內容數據到瀏覽器中使用Page.Response.Write(「」)在for循環。asp.net響應雙內容類型

在開始循環之前,我正在將reponse.context屬性的conetnt類型更改爲「ms-excel」。

如果我在循環期間有異常,我嘗試通過註冊HTML啓動腳本塊向瀏覽器彈出錯誤消息並將其寫入瀏覽器。在寫入之前,我將內容類型更改爲text/html。 但我得到一個錯誤,說這是不可能更改發送HTTP頭後的內容類型。

如何通知瀏覽器該循環中發生的錯誤? 是否有可能讓更多人回到同一瀏覽器選項卡?順便說一句,現在我不想使用ASP.NET AJAX。

回答

0

在更改上下文類型之前,您是否嘗試Response.ClearHeaders();

如果因爲Response.Write導致問題而無法工作,那麼在決定內容類型然後設置標題之前,您可能會想到構建字符串的路線。

  • 環槽的內容,並加入到一個StringBuilder
  • 如果沒有錯誤,設置的contentType到MS-Excel和寫出SB
  • 如果有錯誤,留下的contentType,因爲它是寫出來你的錯誤消息根據需要。
+0

我會接受你的答案,ClearHeaders()對我很好。但是你的其他建議,我認爲緩存SB中的所有數據在數據量非常大的情況下都不錯,它會拋出OutOfMemory異常。謝謝。 –

0

Page.Response.Write( 「」)將數據發送到瀏覽器。當你這樣做時,瀏覽器需要知道它獲取的內容類型,以便使其正確。如果你已經告訴瀏覽器你有什麼樣的內容(並且即使你沒有,你已經用Response.Write搜索數據,它會使用我認爲是text/html的默認值),那麼你不能把它收回。無論你對客戶說什麼,你都無法收回。 解決問題的方法是按照Doozer的建議緩存回覆。

/提比

相關問題