2010-08-15 2 views
0

ASP.NET 용 사용자 지정 HTTPModule을 구현하려고합니다. 매우 간단한 html 페이지에 이미지가 있고 HTTPModule이 BeginRequest 이벤트에 연결되어 있습니다. Visual Studio의 dev 웹 서버로 디버깅 할 때 내 모듈은 두 번 호출됩니다. 하나는 초기 페이지 요청에 대한 것이고 다른 하나는 이미지 요청에 대한 것입니다. 이것이 내가 기대했던 것입니다. 그러나 IIS에 응용 프로그램을 배포 할 때 모듈은 페이지 요청을 위해 한 번만 호출됩니다. 나는 왜 그런지 이해하지 못한다. 어떤 아이디어? 감사.HTTPModule 페이지 당 한 번만 호출하기

+0

아래 답변 중 하나라도 정확하다면 답을 표시해 주시겠습니까? –

답변

0

확인할 사항 : 이미지에 서버가 실제로 연결되어 있습니까? 클라이언트 캐시에 있습니까?

확인해야 할 두 번째 사항 : 아마도 서버 측에 캐시되고 있습니까?

이미지 자체의 URL을 브라우저에서 직접로드 해보십시오. 어쩌면 마지막에 ?foo=bar과 같은 것을 추가하여 일부 원시 캐시 무효화를 수행하십시오.

+0

예, 서버에 접속합니다. 페이지를 새로 고치고 피들러를 열어 요청을 확인하십시오. 이미지를 직접 누르지 만 여전히 맞춤 모듈을 호출하지 않았습니다. 나는 foo = bar와 no 주사를 시도했다. 심지어 IIS를 재설정했다. – skazzaks

+0

Jon이 이미 권장 했으므로 웹 서버를 호출하기 전에 캐시를 지우십시오. –

3

IIS6 또는 IIS7을 클래식 관리 파이프 라인 모드와 함께 사용하고 있다고 생각합니다. 이 경우 ASP.NET 응용 프로그램은 mapped to isapi.dll 요청 만받습니다. 일반적으로 다음 확장명의 요청이 포함됩니다. aspx, ashx, asmx ... 좀 더 자세한 정보는 here을 참조하십시오.

다른 확장 프로그램에 대한 요청은 IIS에서 직접 처리하므로 HTTP 모듈 (ISAPI 확장의 일부로 실행 됨)에 도착하지 않습니다.

IIS7 이상에서는 Microsoft가 IIS에 파이프 라인을 통합했습니다. 즉, 모든 요청이 전체 ASP.NET 파이프 라인을 따라 전달됩니다.

또 다른 가능성은 Jon의 제안에 따라 이미지가 어딘가에 캐시되어 있다는 것입니다.

+0

@skazzaks :이 문제를 더 이상 해결하려면 개발 컴퓨터에서 Cassini 또는 IIS7 통합 모드를 실행하고 프로덕션 서버를 IIS6 또는 IIS7 클래식 모드로 실행하십시오. –

관련 문제