2009-08-12 70 views
2

我想知道如何才能發出連續響應流而不最終關閉它。爲了更好地解釋我的問題,將asp頁面視爲代理來轉發來自不同源的第三方流(由另一個源廣播的音頻流或視頻流)ASP.net連續響應流

顯然,Response.Write()或Response.BinaryWrite )將我限制爲預定義的源。

在此先感謝。

回答

3

您可以使用當前HttpResponse對象的BufferOuput屬性禁用響應緩衝。

+0

感謝您的反饋。還有以這種方式實際輸出響應的問題,因爲Response對象提供的方法只允許預定義的字節數組等。 基本上我需要兩個併發運行的對象,一個是讀取器,另一個是將從讀取器讀取的內容寫入輸出。 – mtranda 2009-08-12 20:02:12

1

我可以想象禁用響應緩衝或使用Response.Flush()定期應該做的伎倆。

通過設置IHttpHandler,您只需確保Process()方法永遠不會執行完畢,因此您的請求也不會完成。

+0

關於您的約束到預定義的源你需要設置 1.從流 2.讀取保存到緩衝 3.作家緩衝器到響應(的BinaryWrite) 4.沖洗響應來自步驟1 – 2009-08-12 20:12:57

+0

5.重複感謝那。我剛剛寫了一封關於需要運行兩個併發對象的文章,對網頁來說似乎有點矯枉過正。另一方面,我想知道是否按照你提到的方式來做它會丟失任何數據包(因爲它是一個直播流),儘管它不應該是一個大問題,特別是如果我要這樣做小塊。 – mtranda 2009-08-12 20:19:48

+0

使用返回Stream的WebClient和OpenRead方法,它將緩存傳入的直播流,直到您使用Stream上的Read()方法彈出數據。 – 2009-08-12 20:32:03

0

除了嘗試Response.Buffer = false和調用諸如Response.Flush()之外,確保在測試時不使用代理服務器/ Http調試器。在我關閉Fiddler之前,我沒有得到這個工作。