내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8 에뮬레이터에서 로컬 웹 서비스에 연결하는 방법

2014-06-18

이 항목에서는 Windows Phone 8 에뮬레이터 에서 실행되는 Windows Phone 앱을 개발 컴퓨터에서 로컬로 실행되는 WCF 웹 서비스에 연결하는 방법에 대해 설명합니다.

Visual Studio 에서 WCF 웹 서비스를 만들면 기본적으로 서비스가 IIS Express에서 호스트되며 http://localhost/의 연결만 허용합니다. Windows Phone 7.1 에뮬레이터는 개발 컴퓨터의 네트워크 연결을 사용하므로 Windows Phone OS 7.1 을 대상으로 하는 앱은 localhost로 개발 컴퓨터에 연결할 수 있습니다. Windows Phone 8 에뮬레이터 는 그 자체를 네트워크에서 별도의 장치로 구성합니다. 따라서 Windows Phone 8 에뮬레이터 에서 실행되는 앱은 localhost로 개발 컴퓨터에 연결할 수 없습니다.

에뮬레이터에서 로컬 웹 서비스에 연결하려면 다음 두 가지 항목을 변경해야 합니다.

  • 네트워크에 있는 다른 장치의 연결을 허용하도록 로컬 웹 서비스 및 웹 서버를 구성해야 합니다.

  • 서비스가 실행되고 있는 개발 컴퓨터의 IP 주소를 사용하여 서비스에 연결하도록 Windows Phone 앱에서 서비스 참조를 구성해야 합니다.

중요중요:

회사 도메인에서, 에뮬레이터는 이 도메인에 포함되지 않는 별도의 네트워크 장치로 표시됩니다. 따라서 에뮬레이터가 도메인에 포함된 개발 컴퓨터에서 실행되고 있는 서비스에 연결할 수 있으려면 먼저 IT 부서의 예외를 받아야 할 수도 있습니다.

이 항목에는 다음 단원이 포함되어 있습니다.

 

이 섹션에서는 WCF 웹 서비스와 IIS 또는 IIS Express에서의 서비스 구성 및 호스팅에 익숙한 사용자를 위해 간단한 솔루션 요약을 제공합니다. 자세한 단계 및 스크린샷은 이 항목에서 다음에 이어지는 섹션 및 절차를 참조하세요.

IIS Express 관련 빠른 솔루션

  1. IIS Express가 사용하고 있는 포트에서 방화벽을 통해 HTTP 요청을 허용하는 방화벽 예외를 만듭니다.

  2. 필요한 경우 ipconfig를 실행하여 개발 컴퓨터의 IP 주소를 가져옵니다.

  3. %USERPROFILE%\Documents\IISExpress\config\ 폴더에서 IIS Express 구성 파일 applicationhost.config를 찾습니다. 일반적으로 USERPROFILE 환경 변수에는 C:\Users\<your user name> 값이 있습니다.

  4. 메모장이나 다른 텍스트 편집기를 사용하여 applicationhost.config를 열고 다음과 같이 변경합니다.

    1. WebServiceForTesting.웹 서비스에 대한 site 요소를 찾습니다.

      웹 서비스에 대한 site 요소가 표시되지 않으면 적어도 한 번 이상 서비스를 배포하여 이 요소를 만들어야 합니다.

    2. site 요소의 bindings 섹션 내에서 binding 요소를 복사하여 기존 binding 요소 바로 아래에 붙여 넣어 두 번째 바인딩을 만듭니다.

    3. binding 요소에서 localhost를 컴퓨터의 IP 주소로 바꿉니다.

    4. 변경 내용을 저장합니다.

  5. 관리자로 Visual Studio 를 실행하고 Visual Studio 솔루션을 엽니다.

  6. 휴대폰 앱 프로젝트에서 서비스에 대한 서비스 참조를 이전에 추가한 경우 제거합니다. 다시 구성된 웹 서비스에 새 서비스 참조를 추가합니다.

    1. 서비스 참조 추가 대화 상자의 주소 상자에서 localhost를 개발 컴퓨터의 IP 주소로 바꿉니다.

    2. 이동을 클릭합니다.

      WCF 프로젝트에서 서비스에 대한 두 번째 바인딩이 검색되어 표시됩니다.

    3. 확인을 클릭합니다.

      개발 컴퓨터의 IP 주소를 사용하는 새 서비스 참조가 Windows Phone 프로젝트에 추가됩니다.

IIS 관련 빠른 솔루션

  1. WCF 서비스용 Windows 기능 HTTP 활성화를 설치합니다.

  2. 방화벽 예외를 만들어 방화벽에서 World Wide Web 서비스(HTTP)를 허용합니다.

  3. 필요한 경우 ipconfig를 실행하여 개발 컴퓨터의 IP 주소를 가져옵니다.

  4. 관리자로 Visual Studio 를 실행하고 Visual Studio 솔루션을 엽니다.

  5. 웹 서비스 프로젝트에서, 프로젝트 속성의 페이지에서 다음과 같이 변경합니다.

    1. IIS Express 사용 옵션을 선택 취소합니다.

    2. URL 텍스트 상자에서 localhost를 개발 컴퓨터의 IP 주소로 바꿉니다.

    3. 가상 디렉터리 만들기 버튼을 클릭합니다.

    4. 변경 내용을 저장합니다.

  6. 휴대폰 앱 프로젝트에서 서비스에 대한 서비스 참조를 이전에 추가한 경우 제거합니다. 다시 구성된 웹 서비스에 새 서비스 참조를 추가합니다. 서비스 참조 추가 대화 상자에 표시되는 URL에는 개발 컴퓨터의 IP 주소가 포함됩니다.

이 항목에서 설명하는 Visual Studio 솔루션에는 Visual Studio 의 Professional 버전 이상이 필요합니다. Visual Studio 의 Express 버전에는 WCF 프로젝트에 대한 전체 지원이 포함되지 않습니다.

Windows Phone 앱 프로젝트 및 Visual Studio 솔루션을 설정하려면

  1. Visual Studio 2012 Professional 이상에서 새 Windows Phone 앱을 만듭니다. 이 테스트에서는 프로젝트 이름을 PhoneAppForTesting으로 지정합니다. 솔루션에는 두 개의 프로젝트가 포함되므로 솔루션의 이름을 위 프로젝트가 아닌 다른 이름을 지정합니다. 이 테스트에서는 솔루션 이름을 ConnectToLocalWebService으로 지정합니다. 확인을 클릭합니다.

    New project dialog box
  2. 새 Windows Phone 응용프로그램 대화 상자에서 Windows Phone OS 8.0을 대상 버전으로 선택합니다. 확인을 클릭합니다. 새 솔루션과 새 Windows Phone 프로젝트가 만들어집니다.

    New project version dialog box

WCF 웹 서비스 프로젝트를 설정하려면

  1. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 버튼으로 클릭하고 추가를 선택한 다음 새 프로젝트를 선택합니다.

  2. 새 프로젝트 추가 대화 상자의 설치된 템플릿 목록에서 WCF 카테고리를 선택합니다.

  3. WCF 프로젝트 템플릿 목록에서 WCF 서비스 응용프로그램 템플릿을 선택합니다. 이 테스트에서는 프로젝트를 WebServiceForTesting이라고 합니다. 확인을 클릭합니다.

    이 항목에서 설명한 솔루션에는 WCF 서비스 응용프로그램 프로젝트 형식이 필요합니다. WCF 서비스 라이브러리 형식의 프로젝트는 다른 호스트 프로세스로 실행되며 이 솔루션에서 설명한 대로 다시 구성할 수 없습니다.

    New WCF project dialog box

    새 WCF 서비스 프로젝트가 솔루션에 추가됩니다.

    Solution Explorer with two new projects
  4. 솔루션 탐색기에서 서비스 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.

  5. 프로젝트 디자이너에서 을 클릭하여 웹 설정의 페이지를 엽니다. 설정은 프로젝트가 IIS Express를 사용하여 서비스를 호스트하고 localhost URL을 사용하여 서비스에 연결하도록 기본적으로 구성되어 있음을 나타냅니다.

    Project settings using IIS Express and localhost
  6. 빈 웹 서비스 프로젝트를 빌드합니다. 이 단계를 건너뛰면 Windows Phone 프로젝트에 서비스 참조를 추가하려고 할 때 오류가 발생할 수 있습니다.

  7. 솔루션 탐색기의 웹 서비스 프로젝트에서 Service.svc를 마우스 오른쪽 버튼으로 클릭하고 브라우저에서 보기를 선택합니다. 웹 브라우저가 열리고 서비스가 인식되고 사용할 수 있음을 나타내는 페이지가 표시됩니다.

    Browser page displaying the service

웹 서비스 테스트를 위한 휴대폰 앱 프로젝트를 구성하려면

  1. 솔루션 탐색기에서 Windows Phone 앱 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 서비스 참조 추가를 선택합니다.

  2. 서비스 참조 추가 대화 상자에서 검색을 클릭한 다음 솔루션의 서비스를 클릭합니다.

    Add Service Reference dialog box
  3. 서비스 참조 추가 대화 상자에서 확인을 클릭합니다. 서비스 참조가 솔루션 탐색기의 서비스 참조 폴더에 있는 Windows Phone 프로젝트에 추가됩니다.

  4. MainPage.xaml에서 TextBlock 컨트롤을 추가하여 웹 서비스에서 반환한 결과를 표시합니다. 이 테스트에서는 TextBlock 이름을 tbWebServiceResult로 지정합니다.

            <!--ContentPanel - place additional content here-->
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <TextBlock x:Name="tbWebServiceResult" Width="400" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" FontSize="48"/>
            </Grid>
    
  5. MainPage.xaml.cs 코드 파일을 열고 다음 코드를 추가합니다. 이 코드에서는 GetData 메서드를 호출하여 기본적으로 새 서비스 프로젝트에 만들어지는 웹 서비스를 테스트합니다.

            private void TestWebService()
            {
                int testValue = 7;
    
                ServiceReference1.Service1Client clientForTesting = new ServiceReference1.Service1Client();
                clientForTesting.GetDataCompleted += new EventHandler<ServiceReference1.GetDataCompletedEventArgs>(TestCallback);
                clientForTesting.GetDataAsync(testValue);
            }
    
            private void TestCallback(object sender, ServiceReference1.GetDataCompletedEventArgs e)
            {
                this.tbWebServiceResult.Text = e.Result;
            }
    
  6. MainPage 생성자에서 InitializeComponent() 뒤에 TestWebService() 메서드를 호출하는 코드 줄을 추가합니다.

            // Constructor
            public MainPage()
            {
                InitializeComponent();
    
                TestWebService();
            }
    

솔루션을 구성하기 전에 에뮬레이터에서 실행되는 앱과 로컬 웹 서비스의 연결을 테스트하려면

  1. F5 키를 눌러 에뮬레이터에서 프로젝트를 실행합니다. 앱은 localhost를 사용하여 개발 컴퓨터에서 실행되는 웹 서비스에 연결하려고 합니다. 몇 초 후 앱은 예외로 인해 실패합니다. 앱이 localhost에서 웹 서비스를 찾을 수 없으므로 일반적으로 CommunicationException이 표시됩니다.

    Communication Exception error message

    자세히 보기 링크를 클릭하면 자세히 보기 대화 상자가 열리고 다음 설명이 표시됩니다.

    The remote server returned an error: NotFound.

    Communication Exception error details
  2. Shift+F5를 눌러 디버깅을 중지합니다.

localhost 주소로 인해 발생한 연결 문제를 해결하려면 네트워크에 있는 다른 장치의 연결을 허용하도록 웹 서비스 프로젝트 및 IIS Express를 구성해야 합니다. 이러한 장치는 서비스가 실행되고 있는 개발 컴퓨터의 IP 주소를 사용하여 서비스에 연결합니다.

IIS Express에 대해 HTTP 요청을 위한 방화벽 연결을 만들려면

  1. Windows 시작 화면에서 Windows 방화벽을 검색합니다. 프로그램을 클릭하여 실행합니다.

  2. Windows 방화벽 화면에서 고급 설정을 클릭합니다.

  3. 고급 보안이 포함된 Windows 방화벽 화면에서 인바운드 규칙을 선택합니다. 새 규칙을 클릭합니다.

  4. 새 인바운드 규칙 마법사규칙 유형 페이지에서 포트를 선택합니다. 다음을 클릭합니다.

  5. 프로토콜 및 포트 페이지의 특정 로컬 포트 필드에 IIS Express가 사용하고 잇는 포트 번호를 입력합니다. 다음을 클릭합니다.

    Visual Studio 에서 프로젝트 속성의 페이지를 통해 포트 번호를 찾을 수 있습니다.

    Project settings using IIS Express and localhost
  6. 작업 페이지에서 연결 허용을 선택합니다. 다음을 클릭합니다.

  7. 프로필 페이지에서 개인을 선택하고 해당하는 경우 도메인을 선택합니다. 공용은 선택하지 마세요. 다음을 클릭합니다.

  8. 이름 페이지에서 규칙의 이름을 입력합니다. 예를 들어 Local web service for testing이라고 입력합니다. 마침을 클릭합니다.

네트워크의 연결을 허용하도록 서비스 및 IIS Express를 구성하려면

  1. 개발 컴퓨터에서 명령 프롬프트 창을 열고 ipconfig를 실행하여 IP 주소를 가져옵니다.

  2. ipconfig 출력에서 IPv4 주소라는 캡션이 지정된 출력 줄의 IP 주소를 기록해 둡니다.

  3. 다음 제한에 유의합니다.

    • 프로젝트 속성의 페이지에서 서비스의 주소를 쉽게 변경할 수 있습니다. 여기서 서비스의 URL은 편집 가능한 텍스트 상자에 표시됩니다. 그러나 표시된 URL을 http://<ip address>/로 바꾸면 Visual Studio 에 가상 디렉터리를 만들라는 메시지가 표시됩니다. 를 클릭하면 이 프로세스가 오류로 인해 실패합니다.

      Project settings using IIS Express and localhost
    • 솔루션을 닫고 .csproj 프로젝트 파일에서 IISUrl 요소를 수동으로 변경하여 URL을 바꿀 수도 있습니다. 그러나 .csproj 프로젝트 파일에서 IISUrl 요소의 값을 수동으로 바꾸면 Visual Studio 에서 프로젝트를 다시 열지 못할 수 있습니다. 오류 메시지에는 다음과 같은 문이 포함됩니다.

      You must specify “localhost” for the server name.

  4. 다음 폴더에서 IIS Express 구성 파일 applicationhost.config를 찾습니다. 일반적으로 USERPROFILE 환경 변수에는 C:\Users\<your user name> 값이 있습니다.

    %USERPROFILE%\Documents\IISExpress\config\

  5. 메모장이나 다른 텍스트 편집기에서 applicationhost.config를 엽니다.

  6. 구성 파일에서 웹 서비스 웹 서비스 WebServiceForTesting에 대한 site 요소를 찾습니다. 구성 파일의 XML 요소에는 다음과 같은 계층이 있습니다.

    <configuration>
        <application Host>
            <sites>
                <site></site>
            </sites>
        </application Host>
    </configuration>
    

    웹 서비스 WebServiceForTestingsite 요소에는 다음과 유사한 콘텐츠가 있습니다. 웹 서비스에 대한 site 요소가 표시되지 않으면 적어도 한 번 이상 서비스를 배포하여 이 요소를 만들어야 합니다.

       <site name="WebServiceForTesting" id="2">
         <application path="/" applicationPool="Clr4IntegratedAppPool">
           <virtualDirectory path="/" physicalPath="D:\My Projects\ConnectToLocalWebService\WebServiceForTesting" />
         </application>
         <bindings>
           <binding protocol="http" bindingInformation="*:60661:localhost" />
         </bindings>
       </site>
    
  7. site 요소의 bindings 섹션 내에서 binding 요소를 복사하여 기존 binding 요소 바로 아래에 붙여 넣어 두 번째 바인딩을 만듭니다.

    기본 localhost 바인딩은 제거할 수 없지만 컴퓨터의 IP 주소를 사용하는 추가 바인딩을 만들 수 있습니다.

  8. binding 요소에서 localhost를 컴퓨터의 IP 주소로 바꿉니다. 이제 bindings 섹션에는 다음과 유사한 콘텐츠가 있습니다.

         <bindings>
           <binding protocol="http" bindingInformation="*:60661:localhost" />
           <binding protocol="http" bindingInformation="*:60661:<ip address>" />
         </bindings>
    
    
  9. 변경된 파일을 저장합니다.

    프로젝트 속성의 페이지에서 URL을 변경할 필요가 없으며, 계속 localhost가 표시됩니다.

    휴대폰 앱 프로젝트의 서비스 참조에서 웹 서비스의 IP 주소를 사용하고 있는지 확인하려면 ServiceReferences.ClientConfig 파일에서 endpoint 요소를 확인합니다.

  10. IIS Express가 시스템 트레이에서 계속 실행되고 있으면 해당 아이콘을 마우스 오른쪽 버튼으로 클릭하고 종료를 선택합니다. 변경된 구성 파일을 로드하려면 웹 서버를 다시 시작해야 합니다.

  11. Visual Studio 가 계속 열려 있으면 Visual Studio 를 닫고 관리자 권한으로 실행을 선택하여 다시 엽니다. 솔루션을 다시 엽니다. localhost가 아닌 다른 주소에서 웹 서비스를 등록하고 연결하려면 관리자 권한으로 Visual Studio 를 실행해야 합니다.

  12. 서비스를 다시 찾아 IIS Express를 다시 시작합니다.

  13. 시스템 트레이에서 IIS Express 아이콘을 마우스 오른쪽 버튼으로 클릭하고 모든 응용프로그램 표시를 선택합니다. IIS Express 대화 상자가 열리고 솔루션의 웹 서비스에 대한 바인딩 2개가 표시됩니다.

    IIS Express applications list with 2 bindings

IP 주소를 사용하여 IIS Express에 연결하도록 Windows Phone 앱을 구성하려면

  1. Visual Studio 의 Windows Phone 프로젝트에서 서비스 참조 폴더에 있는 서비스 참조를 마우스 오른쪽 버튼으로 클릭하고 삭제를 선택합니다. 이 단계에서는 localhost 주소를 사용하는 서비스 참조를 제거합니다.

  2. 서비스 참조 추가 대화 상자에서 검색을 클릭한 다음 솔루션의 서비스를 클릭합니다.

    Add Service Reference dialog box
  3. 서비스 참조 추가 대화 상자의 주소 상자에서 localhost를 개발 컴퓨터의 IP 주소로 바꿉니다. 그런 다음 Go(이동)를 클릭합니다.

  4. 서비스 참조 추가 대화 상자에서 확인을 클릭합니다. 개발 컴퓨터의 IP 주소를 사용하는 새 서비스 참조가 Windows Phone 프로젝트에 추가됩니다.

IIS(인터넷 정보 서비스)로 서비스를 호스트할 때는 IIS Express로 서비스를 호스트할 때보다 솔루션을 구성하는 단계가 더 적습니다.

다음 절차에서는 IIS가 개발 컴퓨터에 설치되어 실행되고 있다고 가정합니다.

WCF 서비스의 HTTP 활성화를 설치하려면

  1. Windows 시작 화면에서 Windows 기능 사용/사용 안 함을 검색합니다. 프로그램을 클릭하여 실행합니다.

  2. Windows 기능 대화 상자에서 .NET Framework 4.5 고급 서비스를 확장한 다음 WCF 서비스를 확장합니다.

  3. WCF 서비스에서 HTTP 활성화 옆의 확인란을 선택합니다. 확인을 클릭하여 이 기능을 설치합니다.

    Installing the HTTP Activation feature

IIS에 대해 HTTP 요청을 위한 방화벽 연결을 만들려면

  1. Windows 시작 화면에서 Windows 방화벽에서 앱 허용을 검색합니다. 프로그램을 클릭하여 실행합니다.

  2. 허용되는 앱 대화 상자에서 설정 변경을 클릭합니다.

  3. 허용되는 앱 및 기능 목록에서 World Wide Web 서비스(HTTP) 옆의 확인란을 선택하여 웹 서비스 호출에 대한 방화벽 예외를 만듭니다. 확인을 클릭합니다.

    Firewall exception for World Wide Web service

네트워크의 연결을 허용하도록 서비스 및 IIS를 구성하려면

  1. 관리자 권한으로 실행 옵션을 사용하여 Visual Studio 를 시작하거나 다시 시작하고 ConnectToLocalWebService 솔루션을 다시 엽니다.

  2. WCF 서비스 프로젝트에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.

  3. 프로젝트 디자이너에서 을 클릭하여 웹 설정의 페이지를 엽니다.

  4. IIS Express 사용 옵션을 선택 취소합니다. 프로젝트 URL 텍스트 상자에 표시되는 URL이 변경됩니다.

  5. URL 텍스트 상자에서 localhost를 개발 컴퓨터의 IP 주소로 바꿉니다.

    Service properties when hosted by IIS
  6. 가상 디렉터리 만들기 버튼을 클릭합니다. 몇 초 후 가상 디렉터리가 만들어졌다는 메시지가 표시됩니다.

  7. 프로젝트 디자이너에서 수행한 변경 사항을 저장합니다.

IP 주소를 사용하여 IIS에 연결하도록 Windows Phone 앱을 구성하려면

  1. Visual Studio 의 Windows Phone 프로젝트에서 서비스 참조 폴더에 있는 서비스 참조를 마우스 오른쪽 버튼으로 클릭하고 삭제를 선택합니다. 이 단계에서는 기존 서비스 참조를 제거합니다.

  2. 서비스 참조 추가 대화 상자에서 검색을 클릭한 다음 솔루션의 서비스를 클릭합니다. WCF 프로젝트의 서비스가 검색되어 표시됩니다. URL에는 개발 컴퓨터의 IP 주소가 포함됩니다.

    Discovering the service when hosted by IIS
  3. 서비스 참조 추가 대화 상자에서 확인을 클릭합니다. 개발 컴퓨터의 IP 주소를 사용하는 새 서비스 참조가 Windows Phone 프로젝트에 추가됩니다.

솔루션을 구성한 후 앱을 다시 테스트합니다. 이제 앱이 개발 컴퓨터에서 로컬로 실행되는 WCF 웹 서비스를 찾아 연결합니다.

솔루션을 구성한 후 에뮬레이터에서 실행되는 앱과 로컬 웹 서비스의 연결을 테스트하려면

  1. F5 키를 눌러 에뮬레이터에서 프로젝트를 실행합니다. 에뮬레이터가 시작되어 앱을 실행합니다. 몇 초 후 웹 서비스의 결과가 표시됩니다.

    App running successfully in the emulator
  2. Shift+F5를 눌러 디버깅을 중지합니다.

Windows Phone 8 에서 실행되는 Internet Explorer는 웹 서비스에서 받는 응답을 SOAP 또는 XML 형식으로 표시할 수 없습니다. 휴대폰의 브라우저를 사용하여 SOAP 또는 XML 형식으로 응답을 보내는 웹 서비스를 찾으면 브라우저에 빈 화면이 표시됩니다.

Windows Phone SDK 8.0 에서 도구로 작업하는 동안 답을 찾고 문제를 해결하려면 Windows Phone 개발 도구 포럼을 방문하세요. Windows Phone 개발에 대한 모든 포럼을 보려면 Windows Phone 개발 포럼을 방문하세요. 다른 지원 옵션을 검토하려면 MSDN 문제 해결 및 지원을 방문하세요.

표시:
© 2015 Microsoft