ASP.NET에는 ISAPI Extension 및 ISAPI Filter처럼 기능하도록 하는 방법이 있다.

그것을 가능하게 해주는 클래스가 바로 IHttpHandler 및 IHttpModule 인터페이스이다.

 

이 두 가지의 상세한 설명은 아래의 링크를 참조하자.

http://15seconds.com/issue/020417.htm

 

이것을 이용하면 전체 웹 사이트 혹은 특정 경로에 있는 특정 파일에 대한 접근 제어를 전역 클래스로 처리할 수 있다.

심지어는 정적 파일(.htm)이나 바이너리(.exe, .zip 등)에 대한 접근까지도 제어할 수 있다, 마치 ISAPI Filter처럼!

(물론 정적 파일에 대한 제어를 위해서는 IIS의 ScriptMap이라는 부분을 건드려서 제어할 대상 파일의 확장자를 ASP.NET 응용 프로그램으로 인식하도록 해주어야 한다. - 이 부분은 IIS의 등록정보 - [가상 디렉터리] 탭 - [구성]단추 - [매핑] 탭에서 설정한다.)

 

첨부파일은 .exe와 .zip을 웹 응용 프로그램 하위의 Download 폴더에서 내려받을 경우에 각각 필터링되어 웹 페이지에 글자를 출력하고, 다시 링크를 클릭하게하여 동적으로 파일을 내려받도록 만든 예제이다.

예제를 특정 가상 디렉터리(예: /HttpEnhanced)에 설치한 뒤 IIS에서 해당 가상 디렉터리에 .exe 및 .zip에 대한 응용 프로그램 매핑을 설정하고 나면 다음과 같이 실행됨을 알 수 있다. (응용 프로그램 매핑은 AdsUtil.vbs를 이용하여 커맨드 라인으로도 설정할 수 있다.)


httpenhanced.zip


(첨부파일 안에 들어있는 /Download/HttpsMim.zip__ 파일은 바이러스가 들어있다고 MSE 등의 백신 프로그램에서 경고를 할 수 있는데, 실제론 바이러스같은 건 없다. 혹시나 그래도 의심되면 압축을 풀고 실행하지 않으면 된다.)

 

1. 웹 브라우저에서 예제에 포함되어 있는 HttpsMim.zip 경로를 입력하여 다운로드를 시도한다.

  (예: http://localhost/HttpEnhanced/Download/HttpsMim.zip__ )

2. 파일 다운로드 창이 나타나는 대신 영문으로 "You are trying to download HttpsMim.zip..."이라는 메시지가 보인다.

3. 바로 아래줄에 "Hello, you?" 라는 메시지가 보이고 한 줄 건너 아래에 "Click this." 라는 링크가 보인다.

4. "this"의 링크를 클릭하면 파일 다운로드 창이 나타난다.

 

여기서 2번을 처리하는 것이 DownloadModule.cs 파일로 작성된 HTTPModule의 역할이고,

3번을 처리하는 것이 DownloadHandler.cs 파일로 작성된 HTTPHandler의 역할이 되겠다.

4번은 그냥 Default.aspx 페이지에서 처리되는 부분이다.

 

이렇게 동작하도록 구성된 부분은 Web.Config 파일에 적혀 있다. ^^


'Tech: > .NET·C#' 카테고리의 다른 글

MessageBoxEx  (0) 2008.08.07
비 .NET(unmanaged) 에서 호출할 수 있도록 DLL 내보내기  (0) 2008.06.26
ASP.NET 파일 다운로드 제어  (0) 2008.06.26
MSMQ 메시지 보내는 방법  (0) 2008.06.26
구조체 사용 시 참고사항  (0) 2008.06.26


Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]