학교뉴스그룹 ARA에 ASP.NET 관련 질문이 올라왔습니다. 학교 내에서는 아무래도 ASP.NET 보다는 JAVA나 PHP를 많이 쓰기 때문인지 답변이 안 달리더군요. 그래서 귀찮은 마음을 애써 떨치고 답변을 달았습니다. 질문은 다음과 같았습니다.
사용자 인증에 대해서는 책을 보고 web.config, login.aspx 등등을 만들어 구현을 하였습니다. 그래서 폴더가 다음처럼 구성이 되어 있다고 할 때,
--------------------------------------------- wwwroot // 루트 디렉토리 test_webpage // 프로그램 디렉토리 web.config login.aspx test.aspx test.zip ---------------------------------------------http://localhost/test_webpage/test.aspx 라고 치면 login.aspx 에서 사용자 인증을 거쳐야 합니다. 근데 문제는 aspx 를 제외한 다른 파일들의 경우, 예를 들어 http://localhost/test_webpage/test.zip 이라고 치면 다운이 받아져버린다는 것입니다.
제 답변은 다음과 같았습니다.
대충 어떤 상황인지는 알겠네요. 우선 aspx 나 asmx 같은 asp.net 파일이 아닌 경우에 인증이 안 되는 것은 당연합니다. 클라이언트가 요청하면 다음과 같은 경로를 통하게 되죠.
요청->IIS서버->.NET Framework(ASP.NET)
그런데 .aspx 등이 아니면 IIS가 .NET Framework로 요청을 보내지 않고 자신이 처리해버립니다. 다행스럽게도 이 문제는 간단히 해결할 수 있습니다. 반드시 그래야 하는 것은 아니지만 일반 파일을 모아둘 디렉토리를 만드는 것이 낫습니다. 적어주신 예제를 약간 변형해서 다음과 같이 구성되어 있다고 생각해보죠.
--------------------------------------------- wwwroot // 루트 디렉토리 test_webpage // 프로그램 디렉토리 web.config login.aspx test.aspx NotASPX // 일반 파일용 디렉토리 test.zip ---------------------------------------------이제 ‘관리도구->인터넷정보서비스’로 갑니다. NotASPX 디렉토리를 선택한 후 등록정보를 봅니다. ‘디렉토리->구성->매핑’에서 추가 버튼을 클릭합니다.
실행파일: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll
확장명: .*를 입력하면 문제가 해결되어 있을 겁니다.
그럼 멋진 홈페이지 만드세요.