ISA 또는 IIS에 의해로드되는지 여부에 따라 동작을 변경해야하는 ISAPI 필터로 구현 된 응용 프로그램이 있습니다. GetFilterVersion 동안 ISA에 의해로드되는 경우 SF_NOTIFY_SEND_RAW_DATA에 등록하거나 IIS에 의해로드되는 경우 SF_NOTIFY_SEND_RESPONSE에 등록해야합니다.ISAPI 필터는 IIS 또는 ISA에 의해로드되는 것을 어떻게 구별 할 수 있습니까?
GetFilterVersion에 전달 된 서버에 대한 정보가없는 것 같습니다. IIS와 ISA를 구분하고 구분할 수있는 트릭이 있습니까?
는[편집]
응용 프로그램은 GetFilterVersion 통화 중, 초기화시를로드하는 것을 서버 알 필요가있다. 현재 요청이 없으므로 헤더 변수에서 SERVER_VARIABLE을 (를) 얻으려고하면 작동하지 않습니다. 이 시점에서 헤더 변수가 없습니다.
내 응용 프로그램은 쿠키 및 캐시 제어 헤더와 같은 응답 헤더를 설정합니다. ISA 서버 컨텍스트에서 실행될 때 SF_NOTIFY_SEND_RAW_DATA 이벤트를 사용하여이 작업을 완료하고 ISA 프록시에서 보내는 원시 데이터를 수정해야합니다. 그러나 IIS에서이 알림을 사용하면 심각한 성능 저하가 발생하므로 응용 프로그램에서 SF_NOTIFY_SEND_RESPONSE를 사용해야합니다. SF_NOTIFY_SEND_RESPONSE는 ISA에서 발생하는 응답 (오류 페이지 등)에 대해서만이 이벤트가 프록시 응답으로 시작되지 않기 때문에 ISA에서 작동하지 않습니다. 마지막으로 이벤트 등록은 GetFilterVersion() 중에 한 번 발생하며 필터가로드되면 수정할 수 없습니다.
그래서 초기화 중에 SF_NOTIFY_SEND_RESPONSE 또는 SF_NOTIFY_SEND_RAW_DATA에 등록하려고 결정할 때 앱이 IIS 또는 ISA에 의해로드되는지 여부를 알아야합니다.
감사합니다.그게 내가 생각할 수있는 종류의 일이지만, 충분한 윈도우 API를 기억하지 못했거나 찾을 IIS/ISA에 대해 충분히 알고 있습니다. – veefu