티스토리 뷰

반응형

모바일 앱의 백엔드 서비스를 ASP.NET 프로젝트로 개발한다면, 안드로이드(혹은 아이폰)에서 ASP.NET 프로젝트(IIS Express)에 접속할 수 있어야 합니다. 그래야 디버깅을 손쉽게 진행할 수 있지요. 하지만 기본적으로 IIS Express는 외부에서의 접속을 차단하기 때문에, 몇가지 설정이 필요합니다. 이 포스트에서는 IIS Express를 외부에 노출시키는 방법에 대해 설명합니다.

  1. 먼저 IIS Express가 실행되는 PC의 IP를 확인해주세요. 여기서는 "192.168.0.143"이라고 가정합니다.
  2. 방화벽에 예외를 추가해주세요. 만약 ASP.NET 프로젝트에서 사용하는 포트번호가 "49393"이라면 다음과 같은 명령어로 예외를 추가할 수 있습니다.
    netsh advfirewall firewall add rule name="MyWebSite" dir=in protocol=tcp localport=49393 profile=private remoteip=localsubnet action=allow
    
  3. IIS Express에 원격연결 설정을 추가해야 합니다. [솔루션 폴더/.vs/config/applicationhost.config] 파일을 텍스트 편집기로 여세요. 그리고 프로젝트에 해당하는 site 엘리먼트를 찾으세요. 예를들어 프로젝트 명이 MyWebSite라면 다음과 같은 site 엘리먼트를 찾을 수 있습니다.
    <site name="MyWebSite" id="2">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\Users\user\MyWebSite\MyWebSite" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:49393:localhost" />
        </bindings>
    </site>
    
  4. 외부에서 접근할 수 있도록 binding 엘리먼트를 추가해야합니다. bindingInformation의 구성은 [허용할IP주소]:[포트번호]:[서버의 호스트명]입니다. 2개의 binding 엘리먼트를 추가하게 되는데 첫번째는 IIS Express가 실행되고 있는 PC의 IP주소, 두번째는 127.0.0.1 주소를 사용합니다.
    <binding protocol="http" bindingInformation="*:49393:192.168.1.143" />
    <binding protocol="http" bindingInformation="*:49393:127.0.0.1" />
    
  5. 최종적으로 완성된 site 엘리먼트의 모습은 다음과 같습니다. applicationhost.config 파일을 저장해주세요.
    <site name="MyWebSite" id="2">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\Users\user\MyWebSite\MyWebSite" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:49393:localhost" />
            <binding protocol="http" bindingInformation="*:49393:192.168.1.143" />
            <binding protocol="http" bindingInformation="*:49393:127.0.0.1" />
        </bindings>
    </site>
    
  6. 이제 VisualStudio를 재시작해주세요. 반드시 관리자 권한으로 시작해야합니다. 보안상의 이유로 IIS Express는 외부의 접속을 차단합니다. 하지만 Visual Studio를 관리자권한으로 실행하면 외부의 접속을 허용할 수 있습니다.
    VisualStudio를 관리자 권한으로 실행
  7. Visual Studio를 관리자 모드로 실행했다면, 웹사이트를 실행해주세요. 실행이 정상적으로 이루어지면 IIS Express가 다음과 같이 나타나게 됩니다.
    IIS Express 실행결과
  8. 이제 안드로이드(혹은 아이폰)에서 브라우저를 실행하고 접속을 시도해보세요.
    Android에서 접속한 화면

다시 한번, VisualStudio를 관리자 권한으로 실행해야 한다는 점에 주의해주세요.

References

'Mobile' 카테고리의 다른 글

[Xamarin] iOS, Android 파일명  (0) 2017.11.13
댓글