성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
[이승준] 완전히 잘못 짚었습니다. 댓글 지우고 싶네요. 검색을 해보...
[정성태] 우선 답글 감사합니다. ^^ 그런데, 사실 저 예제는 (g...
[이승준] 수정이 안되어서... byteArray는 BYTE* 타입입니다...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <div style='font-family: 맑은 고딕, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>IIS Express - appcmd.exe를 이용한 applicationHost.config 변경</div> <br /> 이전 글에서, iisexpress.exe에 바인딩 정보를 지정하기 위해 applicationHost.config을 사용한다고 소개해 드렸지요.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > IIS Express - localhost 이외의 호스트 이름으로 접근하는 방법 ; <a target='_tab' href='http://www.sysnet.pe.kr/2/0/1030'>http://www.sysnet.pe.kr/2/0/1030</a> </pre> <br /> 그때는 applicationHost.config 파일을 분리해서 지정하는 방법을 썼는데, 오늘은 원본 applicationHost.config에 별도의 웹 사이트 추가를 하는 방법으로 웹 호스팅을 해보겠습니다.<br /> <br /> 다시 이전 글에서 만들어 두었던 default.aspx, default.aspx.cs, web.config을 가지고 c:\temp\web에서 계속 시작해 보면, <br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > C:\Program Files (x86)\IIS Express>iisexpress /path:c:\temp\web /port:8500 Copied template config file '<b style='COLOR: blue'>C:\Program Files (x86)\IIS Express\AppServer\applicationhost.config</b>' to 'C:\Users\SEONGT~1\AppData\Local\Temp\iisexpress\applicationhost201142982046938.config' Updated configuration file 'C:\Users\SEONGT~1\AppData\Local\Temp\iisexpress\applicationhost201142982046938.config' with given cmd line info. Starting IIS Express ... Successfully registered URL "http://localhost:8500/" for site "Development Web Site" application "/" Registration completed IIS Express is running. Enter 'Q' to stop IIS Express </pre> <br /> 위에 보는 것처럼 원본 applicationHost.config의 경로가 "C:\Program Files (x86)\IIS Express\AppServer\applicationhost.config"임을 알 수 있는데요. appcmd.exe 명령어를 통해서 해당 config 파일의 내용을 변경해 줄 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Appcmd.exe(IIS 7) ; <a target='_tab' href='https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc772200(v=ws.10)'>https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc772200(v=ws.10)</a> Create a Web Site (IIS 7) ; <a target='_tab' href='https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc772350(v=ws.10)'>https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc772350(v=ws.10)</a> </pre> <br /> 위의 문서는 IIS 7에 준해서 설명된 글이지만, IIS Express에 포함된 appcmd.exe도 IIS 7의 appcmd.exe의 부분집합을 구현하고 있기 때문에 거의 동일하게 사용할 수 있습니다.<br /> <br /> 자, 그래서 ... c:\temp\web 경로의 웹 애플리케이션을 호스팅 정보를 다음과 같이 추가해 줄 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > C:\Program Files (x86)\IIS Express><b style='COLOR: blue'>appcmd add site /name:"MyWeb" /bindings:http/*:8500: /physicalPath:"c:\temp\web"</b> SITE object "MyWeb" added APP object "MyWeb/" added VDIR object "MyWeb/" added </pre> <br /> 오호... 그런데 웬일입니까? "C:\Program Files (x86)\IIS Express\AppServer\applicationhost.config" 파일은 전혀 변함이 없는 것입니다. 그렇군요. ^^ 다른 경로에 또 있는 것입니다. 사용자마다 부여되는 또 다른 applicationhost.config 경로가 있는데, 제 경우에는 "C:\Users\SeongTae Jeong\Documents\IISExpress\config\applicationhost.config"였습니다. (Visual Studio와 연동되는 웹 사이트들의 정보도 바로 이 경로의 config 파일에 포함되어 있습니다.)<br /> <br /> 결국, 위의 config 파일을 확인해 보면 다음과 같이 "MyWeb" 사이트 정보가 생성된 것을 확인할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > <sites> ...[생략]... <site <b style='COLOR: blue'>name="MyWeb"</b> id="4"> <application path="/"> <virtualDirectory path="/" physicalPath="c:\temp\web" /> </application> <bindings> <binding protocol="http" bindingInformation="*:8500:" /> </bindings> </site> ...[생략]... </sites> </pre> <br /> 이렇게 등록된 "MyWeb" 사이트를 호스팅하려면 다음과 같이 명령어를 주어야 합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > C:\Program Files (x86)\IIS Express><b style='COLOR: blue'>iisexpress /site:"MyWeb"</b> Starting IIS Express ... Failed to add localhost binding to binding '*:8500:' Successfully registered URL "http://*:8500/" for site "MyWeb" application "/" Registration completed for site "MyWeb" IIS Express is running. Enter 'Q' to stop IIS Express </pre> <br /> 기존 applicationHost.config을 활용하느냐? 웹 사이트 전용의 config을 유지하느냐는 상황에 따라 선택하시면 되겠습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 참고로, 하나 더 알아보면. 위에서 사용자용 config 파일의 경로가 "C:\Users\[사용자 계정]\Documents\IISExpress\config\applicationhost.config" 였는데요. 이것을 코드로 구할 수 있는 방법이 있습니다.<br /> <br /> 지난번에 살펴본 Version Manager API를 사용하면 되는데,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > IISExpress - "IIS Installed Versions Manager Interface" 의 IIISExpressProcessUtility 구하는 방법 ; <a target='_tab' href='http://www.sysnet.pe.kr/2/0/1031'>http://www.sysnet.pe.kr/2/0/1031</a> </pre> <br /> 그중에서 IISUserData에서 제공되는 IISDirectory 속성을 구하면 됩니다. 예제 코드는 다음과 같습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > IISVersionManagerLibrary.IISVersionManager mgr = new IISVersionManagerLibrary.IISVersionManagerClass(); IISVersionManagerLibrary.IIISVersion ver = mgr.GetVersionObject("7.5", IISVersionManagerLibrary.IIS_PRODUCT_TYPE.IIS_PRODUCT_EXPRESS); object obj = ver.GetPropertyValue("userInstanceHelper"); IISVersionManagerLibrary.IIISUserData user = obj as IISVersionManagerLibrary.IIISUserData; MessageBox.Show(<b style='COLOR: blue'>user.IISDirectory</b>); 출력 결과: "C:\Users\SeongTae Jeong\Documents\IISExpress" </pre> <br /> <br /><br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
5745
(왼쪽의 숫자를 입력해야 합니다.)