2010-02-07 5 views
2

특정 작업 (권한 부여 등)을 수행하기 위해 작성한 IHttpModule이 포함 된 .net 웹 사이트가 있습니다. 하지만 웹 사이트에는 불행하게도 변경하거나 이동할 수없는 타사 응용 프로그램 (예 : 커뮤니티 서버 포럼, adxstudio CMS 및 기타)에 매핑되는 많은 가상 디렉터리가 있습니다.C# .net 응용 프로그램의 ihttpmodule에서 매핑 된 가상 디렉터리를 검색합니다.

가상 디렉터리의 내용에 대한 요청이있을 때 IHttpModule이 실행되지 않도록하는 방법을 찾고 있습니다. 이것이 가능한가?

[편집 - 추가 된 다음]

내가 가상 디렉터리 애플리케이션에서의 Web.config 파일의 <httpModules> 노드 내부 <remove name="X"/>를 추가로 실험되고 있지만 밖으로 작동하지 않는 것 같습니다. 타사 응용 프로그램을 업데이트 할 수 있으므로 코드/구성을 변경하지 않으려 고하는 중대한 솔루션이 아닙니다.

부모 Web.config에서 <system.web> 노드 주위에 <location path="." inheritInChildApplications="false"> 노드를 추가하려고 시도했지만 작동하지 않는 것 같습니다.

[편집 다시 - 추가 더]

IHttpModule의 초기화 이벤트가 (오히려 내가 가정 한대로 요청에 따라보다) 애플리케이션 라이프 사이클에 한 번 발사에만 있기 때문에 작동하지 않습니다되는 이유입니다. init 이벤트에 일련의 이벤트 리스너를 추가하기 때문에 이후 요청에서도 이러한 이벤트가 계속 발생합니다 ...

답변

2

이러한 디렉토리 및 가상 경로 목록이있는 경우 해당 디렉토리의 조회를 작성할 수 있습니다.

모듈을 트리거하는 모든 HttpRequest에 대해 가상 경로가 룩업의 경로에 속하는지 확인할 수 있습니다. 그렇다면 아무 것도하지 않거나 모듈 코드를 종료 할 수 있습니다.

추신 : -이 내가 가야 할 것이다 방법입니다 추측 성능 문제를 들어, 당신은 아마 응용 프로그램 상태 조회 (예를 들어, 해시 맵 등) 솔루션

+0

감사를 저장할. 내 자신의 논리를 코딩하는 것보다 "내장 된"것이고 효율적인 것이 있어야 할 것 같습니다. 위의 질문을 다른 접근법에 대한 의견으로 업데이트했습니다. 도움이 될만한 행이있을 수 있다고 생각하십니까? – vitch

+0

답변으로 표시하면 이것이 끝나게됩니다. 아직도 더 깨끗한 해결책이 있어야만하는 것처럼 보이지만 만약 이것이 이것이 실행 되어야만한다면 c'est la vie! – vitch