2010-05-20 3 views
3

HTML의 텍스트를 대체하는 HttpResponse.Filter 필터가 있습니다.HttpResponse.Filter 결정 방법 스트림 끝

내가 쓰기 방법 스트림에서 파생와 구현 클래스를 만들었습니다

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

내가 버퍼의 모든 바이트를 읽고 개인의 StringBuilder에 저장을 한 후 나는 텍스트를 교체하고, 쓰기 문자열을 다시 스트림으로 보냅니다.

하지만 스트림이 스트림의 끝에있을 때 어떻게 결정할 수 있습니까? 나는. html (문자열)을 스트림에 다시 쓰는 방법을 결정하려면 어떻게해야합니까?

+0

에릭, 솔루션을 게시 할 수 있습니까? 내 응답 필터로 이상한 행동을 경험하고 있으며 문제를 어떻게 해결했는지 확인하는 것이 도움이 될 수 있습니다. 현재 문제는 여기에 설명되어 있습니다 : http://stackoverflow.com/questions/4464983/http-response-filter-flush-method-invoked-when-a-new-response-is-created –

답변

2

Read 메서드는 스트림에서 읽은 바이트 수를 반환합니다. 스트림의 소스가 인터넷 연결처럼 느린 경우 특히 요청한 바이트 수보다 적을 수 있으므로이 값을 처리하는 것이 중요합니다.

Read 메서드가 0을 반환하면 스트림의 끝에 도달했습니다.

+0

나는 중단 점을 넣습니다 : public override int read (byte [] buffer, int offset, int count) 하지만 결코 충돌하지 않습니다. –

+0

@Erik : 봐요 ... Write 메서드를 재정의 할 때 실제로 데이터를 읽지는 않습니다 ... 그렇다면 스트림의 끝 부분을 감지 할 수 없지만 Close 메서드를 재정 의하여 거기에 결과를 쓸 수 있습니다. – Guffa

+0

오버라이드 플러시 메서드로 작성하여 해결했습니다. 잘 작동한다. 당신의 도움을 주셔서 감사합니다! –