2011-08-07 4 views
0

나는 ISAPI 필터와 ISAPI 확장을 모두 사용하기 때문에 IIS6 용 http 스니퍼를 만들고 있습니다. 확장 - 요청을 읽습니다. 필터 - 응답을 읽습니다.ISAPI 필터의 응답에 ISAPI 확장의 요청을 연결하는 방법은 무엇입니까?

확장 프로그램을 사용하는 이유는 사용자가 IIS5 호환 모드로 변경하지 않아도되므로 SF_NOTIFY_READ_RAW_DATA에 가입 할 수 없기 때문입니다.

내가 응답을 읽었을 때 요청에 연결하고 싶습니다. 요청에 고유 한 식별자를 지정하고 응답을 읽을 때 사용해야합니다.

SF_REQ_GET_CONNID를 사용하여 ServerSupportFunction을 호출하는 옵션이 있지만 IIS6에서는 지원되지 않는다고 읽었습니다.

또한 가능한 해결책은 고객 헤더를 추가 한 다음 제거하는 것입니다. 이는 효과가 있지만 구현하기에 덜 우아하다고 생각합니다.

필터에 연결 ID (EXTENSION_CONTROL_BLOCK의 connID)를 가져 오는 방법이 있습니까?

는 응답

답변

1

Sagiv 내가 몇 달 전에 같은 문제가 있었다 주셔서 감사합니다. HttpFilterProc이에

  1. (ISAPI 필터) 내가 알림 SF_NOTIFY_PREPROC_HEADERS을 찾았다 :

    내가이 문제를 해결하기 위해 다음과 같은했다.
  2. 그런 다음 내 자신의 헤더에 요청에 GUID를 삽입했습니다.
  3. HttpExtensionProc (ISAPI 확장)에서 헤더를 읽고 GUID를 추출합니다.
  4. 그런 다음 요청 콘텐츠를 읽고 GUID로 연결했습니다.
  5. OnSendRawData (ISAPI 필터)에서 (청크 된) 응답 내용을 읽고 다시 GUID와 연결합니다.

이렇게하면 확장 콘텐츠의 요청 콘텐츠와 필터의 응답 콘텐츠가 모두 연결됩니다.