2010-05-20 62 views
3

我得到了一個HttpResponse.Filter過濾器,用於替換HTML中的文本。HttpResponse.Filter如何確定流結束

我已經創建了自Stream派生並實現了Write方法的類:

public override void Write(byte[] buffer, int offset, int count) 

我讀緩衝區中的所有字節並將其存儲在一個私人的StringBuilder,然後我替換的文字,並寫串返回到流。

但我怎樣才能確定什麼時候流是在流的末尾。即如何確定何時將html(字符串)寫回流?

+0

Erik,你可以發佈你的解決方案嗎?我的回覆過濾器遇到了一些奇怪的現象,可能有助於瞭解您是如何解決問題的。我現在的問題在這裏描述:http://stackoverflow.com/questions/4464983/http-response-filter-flush-method-invoked-when-a-new-response-is-created – 2010-12-16 20:40:58

回答

2

Read方法返回從流中讀取的字節數。請注意這個值,因爲它可能小於請求的字節數,特別是當流的源頭像互聯網連接一樣慢時。

Read方法返回零時,您已到達流的末尾。

+0

我把一個斷點: public override int read(byte [] buffer,int offset,int count) 但它永遠不會被擊中 – 2010-05-20 12:03:49

+0

@Erik:我明白了......當你重載Write方法時,你實際上沒有讀取任何數據......然後您無法檢測到流的結束,但您可能可以覆蓋Close方法並在那裏寫出結果。 – Guffa 2010-05-20 13:38:56

+0

我通過在覆蓋刷新方法中寫入來解決它。它運作良好。謝謝你的幫助! – 2010-05-21 07:27:25