windows2009. 5. 3. 13:48

IIS 를 시작시킬 때에 가끔 이런 에러를 내면서 시작되지 않는 경우가 있습니다.

The process cannot access the file because it is being used by another process.

좀 이상한 에러 메시지처럼 보입니다. 파일? 하지만, 실제로는 파일이 아니라 포트입니다. 즉, 파일이 아니라 IIS 웹 애플리케이션이 포트를 다른 프로세스 때문에 쓸 수가 없는 것입니다. 이런 문제가 발생했을 때에는 99%의 경우 다른 프로세스가 포트를 잡고 있는 경우입니다. 80포트야 웹 서버 전용이니, 다른 프로세스가 사용하는 경우가 별로 없지만, SSL의 443이나 다른 커스텀 포트의 경우 이런 일이 발생할 수 있습니다.

http://support.microsoft.com/kb/890015

마이크로소프트 고객지원 사이트의 위 URL을 참조하시면 해결할 수 있습니다.

즉,

netstat –ano

도스 명령행에서 위 명령어를 사용하면 모든 프로세스와 그 프로세스가 사용하는 포트의 리스트를 보실 수가 있습니다. 그러면 해당 포트를 사용하는 프로세스 ID를 파악할 수가 있습니다. 당연히 그 후에 그 프로세스를 중단시키면 됩니다. ^^

Posted by kkongchi
asp.net2007. 2. 15. 11:26
MSDN Magazine에 IIS 7.0에 대한 글이 실렸다.

http://msdn.microsoft.com/msdnmag/issues/07/03/IIS7/

IIS 7.0의 개선된 점들을 소개하고 있는데, 아래의 네 가지 항목이다.

Modular Web server functionality (웹 서버 기능의 모듈화 - 설치/제거가 간편해 진 듯)
Simplified deployment and configuration (배포, 구성이 간단해졌다)
Extensibility and ASP.NET integration (확장성과 ASP.NET 통합)
Improved security, performance, and compatibility (보안, 성능, 호환성의 개선)

개발자로서 가장 관심이 가는 부분은 아무래도 ASP.NET과 유기적인 통합을 이루었다는 점일 것이다. 위 글에 실린 그림을 인용해 보자면..

사용자 삽입 이미지

ISAPI Native 모듈을 통하지 않고, 바로 IIS와 ASP.NET이 연결이 된다는 것을 볼 수 있다. 위 글은 다음과 같이 그 효과를 설명하고 있다.

When running in Integrated mode in IIS 7.0, ASP.NET modules run in the unified request processing pipeline side-by-side with native C++ IIS modules. This means that existing ASP.NET services like Output Caching, URL Rewriting, and any others provided by your custom ASP.NET modules can now apply to any content type. Better runtime integration also enables ASP.NET modules to access previously unavailable server functionality, removing the need to write native IIS extensibility in most cases.
IIS 7.0이 통합 모드로 운영될 때, ASP.NET모듈은 Native C++ IIS모듈과 나란히 통합적인 리퀘스트 처리 파이프라인에서 동작하게 된다. Output 캐싱, URL 리라이팅과 같으 기존의 ASP.NET 서비스나 혹은 다른 당신이 만드는 별도의 서비스들이 이제는 모든 컨텐트 타입에 적용되게 된다. 개선된 런타임 통합은 ASP.NET이 이전에는 불가능했던 여러 가지 기능을 할 수 있도록 해주며, 결국 기존에 Native IIS 확장 모듈을 만들어야 했던 경우들은 이제 없게 될 것이다.


예전에 모 프로젝트(ASP.NET으로 진행했었던)에서 나는 C++로 ISAPI 필터를 하나 만들었던 경험이 있다. 이 ISAPI 필터의 역할은 특정 Request Header를 검사해서, 그것이 있다면 ID, PW입력이 없이도 Windows 인증을 통과시켜주는 것이었다. 이 것을 ASP.NET의 HttpModule 혹은 HttpHandler로 작성할 수 없을까 조사를 했었는데, 그 때는 그것이 불가능했었다. 왜냐하면 Windows 인증은 ASP.NET까지 오기전 ISAPI 모듈에서 일어나는 일이었기 때문에 ASP.NET으로서는 전혀 방법이 없었기 때문이다. 그런데, 이 그림을 보아하니 이런 경우도 이제는 가능해지는 것이 아닐까 생각된다. ASP.NET이 이제는 IIS와 Full Integration이 된다면, 아마 성능 상에도 많은 이점이 있을 것 같다. 결국은 단계가 하나 줄어드는 셈이 되는 것이니까. 물론 직접 사용해봐야 알 수 있겠지만, 현재로서는 기대가 많이 된다.

Posted by kkongchi