Right now do !

[ASP.NET] ASP.NET에서 Win32 호환성 구성

by 지금당장해

 제목에 호환성이라고 했는데 이 표현이 맞는지는 좀 더 고민 해봐야 겠다.


 아주 간단한 설정인데 오류 메시지가 명시적으로 나오지 않아서 당황을 하는 경우가 많다. 특히 서버 구축이라고 하는 것이 우리같이 제품을 공급하는 회사에서는 고객사에 방문하여 익숙하지 않은 환경에서 작업을 정해진 시간에 해야 하는 경우가 많은데 상황이 닥치면 해결을 못하고 돌아오는 경우도 있다. 


어제도 현장 계신 개발자로 부터 문의를 받은 내용은 이렇다. "Win32로 작성된 OCX를 웹 응용프로그램에서 생성하여 사용하려고 하는데 실행시에 이상한 오류가 나요." 오류 내용은 아래 그림을 참고 하기 바란다. 





원인은 64bit 웹 응용프로그램에서 Win32 x86으로 컴파일된 모듈을 사용하려 한 것이다. 일전에 작성한 글에서 이런 문제는 HostExe를 x86으로 컴파일 해주거나 CorFlags 도구를 이용하여 어셈블리의 동작 플래그를 바꾸어 주면 된다고 했다. 그런데 웹 프로그램은 어떻게 해야 하는가?


 ASP.NET는 w3wp.exe라는 프로세스에서 호스트 된다. 운영된는 시스템은 대부분이 Windows server계열 OS이고 대부분 64bit 환경이다. 따라서 이 w3wp.exe(워커 프로세스라고 부르기도 함)는 64bit로 동작한다. IIS는 이 프로세스들의 실행 방식에 대한 설정을 응용프로그램 풀이라는 개념을 만들어 관리 한다. (이 개념에 대해서는 나중에 더 자세히 다루려고 한다.) 이 응용프로그램 풀은 특정 웹 응용프록그램의 동작을 실행 하는 w3wp의 응용프로그램의 Pool이다. 워커=일하는 사람 Pool=웅덩이, 수영장 풀 ..... 이렇게 해석이 된다. 웹 응용프로그램을 위해 일하는 작업자들을 어디에 넣어 놓고 이들이 동작해야 하는 방식을 정의 한다. 이것이 응용 프로그램 풀의 개념으로 나는 이해하고 있다. 


 이제 설정 하는 방법을 알아 보도록 하자. 문제가 되는 웹 응용 프로그램이 사용하고 있는 응용프로그램 풀이 무엇인지 먼저 확인하자. 


IIS관리자 > 해당 웹 응용프로그램 클릭 > 마우스 오른쪽 버튼 > 고급 설정


                        


위 그림에서와 같이 메뉴를 클릭해서 나타난 화면에서 일반 > 응용 프로그래 풀 이라는 항목에 선택 되어 있는 응용 프로그램 풀이 이번 수정 대상임을 확인 한다.


IIS관리 > 위에서 확인한 응용프로그램 풀 > 마우스 오른쪽 버튼 > 고급 설정




 위 그림에서 32비트 응용 프로그램 사용 항목을 False -> True



- 끝 -


블로그의 정보

지금 당장 해!!!

지금당장해

활동하기