문제

ISAPI 필터를 작업하여 특정 콘텐츠를 응답을 벗어나고 있습니다. 처리를 수행하기 전에 응답의 모든 본문을 수집해야합니다. 스트리핑 콘텐츠가 전송 버퍼를 겹칠 수 있기 때문입니다.

이를 위해 응답 내용을 각각 버퍼링하고 싶습니다. SF_NOTIFY_SEND_RAW_DATA 마지막으로 갈 때까지 알림을받은 다음 번역 된 데이터를 보냅니다. 나는 어느 것을 결정하는 가장 좋은 방법을 알고 싶습니다. SF_NOTIFY_SEND_RAW_DATA 실제로 마지막입니다. 내가 기다릴 때까지 SF_NOTIFY_END_OF_REQUEST알림, 버퍼링 된 데이터를 보내는 방법을 모르겠습니다.

한 가지 방법은 컨텐츠 길이를 사용하는 것입니다. 헤더의 끝을 감지해야합니다. 또한 콘텐츠 길이 헤더가 정확하다고 가정해야합니다 (보장 된 것입니까?). HTTP에는 컨텐츠 길이 헤더가 필요하지 않기 때문에 항상 거기에 있을지조차 확실하지 않습니다. 더 쉬운 방법이 있어야하는 것 같습니다.

응답이 청크되지 않았다고 가정하므로 응답 변경을 수행하기 전에 폐쇄를 처리하지 않습니다. 또한 응답 본문을 수정하면 TEH 응답 본문의 크기가 변경되지 않으므로 컨텐츠 길이를 다시 업데이트 할 필요가 없습니다.

도움이 되었습니까?

해결책

나는 결국 Google을 통해 좋은 토론을 발견했습니다.

이 게시물은 내 질문에 답변하고 더 복잡한 필터가 다음을 해결해야 할 문제를 제기합니다. http://groups.google.com/group/microsoft.public.platformsdk.internet.server.isapi-dev/browse_thread/thread/85a5e75f342fad2b/cbb638f9a85c9e03?q=HTTP_FILTER_RAW_DATA&_done=%2Fgroups%3Fq%3DHTTP_FILTER_RAW_DATA%26start%3D20%26&_doneTitle = back+to+search && d & pli = 1

필터는 전체 요청을 자체 버퍼로 버퍼링 한 다음 SF_NOTIFY_END_OF_REQUEST를 사용하여 내용을 보내는 것입니다. 수정은 크기를 변경하지 않으며 응답이 청크 될 가능성을 배제하므로 필터는 필터가 비교적 간단합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top