.NET General2007. 4. 25. 19:44
현재 내가 근무하고 있는 회사는 BI 솔루션 업체이다. 그래서 이 솔루션이라고 하는 것이 현재 개발 중인 버전만 있는 것이 아니고, 기존에 고객들이 쓰던 예전 버전 또한 존재하기 때문에 기존 솔루션을 유지, 관리하는 일도 아주 중요한 업무 중의 하나이다.

얼마전에 이전 버전 중의 하나에서 이슈가 발견되어서, 처음으로 그 예전 버전을 디버깅할 일이 생겼다. 기존 버전은 Visual Studio.NET 2002를 가지고 개발되었기 때문에 VS.NET 2002 를 설치하고 웹 프로젝트를 열려고 하는데..
문제가 발생했다...

열리지 않는 것이다. 분명히 IIS에 제대로 경로를 잡아줬기 때문에 잘 열려야 하는데 안 열리는 것이었다. -_-;;

그리고 결국 Microsoft Support Sited에서 해결책을 찾았다.
Fix: You Cannot create web project on Windows server 2003 in Visual Studio.NET 2002

위 문서에서 제시하는 해결책은 다음과 같다.
1. Visual Studio 2003으로 개발한다
2. IIS 웹 사이트 속성에서 Mime Type에 확장자 tmp, 타입 text/plain 을 하나 추가한다. 비주얼 스튜디오 2002가 웹 프로젝트를 열기 전에 테스트할 목적으로 .tmp파일을 하나 생성해서 거기에 Request를 보내는데 IIS 6.0에서는 명시적으로 Mime Type에 추가시키지 않으면 블록을 해버린다고 한다. 나는 이 방법으로 해결했다.
3. 위 문서에 링크되어 있는 핫픽스를 설치한다.

아마도 나와 같은 특수한 경우가 아니라면 - 사실 나도 Windows 2003을 쓰고 있어서 그랬지만, 원래 우리 회사 솔루션의 예전 버전은 Windows 2000에 설치하는 것이 원칙이다 - 이런 문제를 만날 일이 없을 지도 모르겠다. 하지만 혹시라도 이런 일이 있다면, 참고하시길 바란다.
Posted by kkongchi
windows2006. 10. 12. 23:18
64bit 윈도우 서버에서 aspnet_regiis.exe를 사용해서 ASP.NET 2.0을 등록하려고 하면 아마도 IIS가 32bit 호환 모드로 동작중이라 할 수 없다는 에러 메시지가 출력될 것이다. 그럴 때는 아래 명령어를 사용해서 IIS를 64bit로만 동작하도록 설정해야 한다.
 
cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 0

그런 다음에 aspnet_regiis.exe를 실행시키면 된다.
Posted by kkongchi
asp.net2006. 2. 25. 00:42

HTTP 압축은 gzip 등의 알고리즘을 사용해서, HTTP 를 통해서 전송되는 데이터의 양을 최고 50%로 압축하는 기술이다. ASP.NET 으로 만든 페이지들의 사이즈가 커서 Response Time 이 느리거나, 낮은 대역폭 - 이를테면 56K 라인 - 의 사용자들까지도 지원할려고 한다면, 그리고 더 많은 사용자를 지원하기 위해서 서버의 대역폭을 아껴쓰고자 할 때 상당히 유용하다.

HTTP 압축을 위한 상용 모듈도 있지만, Windows 2003에 내장된 IIS 6.0에서는 자체적으로도 지원을 한다. IIS 관리자에서 아주 간단하게 설정을 할 수 있다. IIS 관리자를 열어서, 트리의 "웹 사이트" 노드에다 마우스 오른쪽 버튼을 클릭하면 나오는 메뉴 중에서 속성을 선택한다. 그리고 "서비스" 탭을 선택하면 다음과 같은 화면이 나올텐데, 간단하게 체크만 해주고, IIS를 한번 Restart 시켜주면 바로 HTTP 압축을 사용할 수가 있다.




하지만, 이렇게만 했을 경우에 ASP.NET 의 aspx 는 압축되어서 내려가지 않는다. IIS가 압축하는 파일 유형에 포함되어 있지 않기 때문이다. aspx도 포함을 시키기 위해서는 WIN_DIR\System32\inetsrv\metabase.xml 파일을 편집해야 합니다. 이 파일에서 <IIsCompressionScheme> 노드를 찾아야 합니다
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="0"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="FALSE"
HcDynamicCompressionLevel="0"
HcFileExtensions="htm
html
txt"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
dll
exe
  aspx"
>
</IIsCompressionScheme>
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="1"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="0"
HcFileExtensions="htm
html
txt"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
dll
exe
  aspx"
>
</IIsCompressionScheme>

빨간 색으로 되어 있는 부분처럼, aspx확장자를 추가시켜주면 그때부터 aspx파일에 대해서도 IIS가 HTTP 압축을 수행할 것이다. (이 파일은 편집하기 위해서 IIS를 잠시 멈춰야 편집을 할 수 있다)

당연한 거겠지만, 압축을 수행하는 서버와 압축된 컨텐트를 받아서 풀어서 보여줘야 하는 클라이언트 양쪽에 약간씩의 CPU 부담이 있다. 하지만 30-50%에 이르는 압축율은 성능 향상과 대역폭 절약이라는 엄청난 이점을 가져오기 때문에, Windows 2003을 사용하는 웹 사이트에서는 충분히 사용할만한 기술인 것 같다.
Posted by kkongchi