2011-01-28 3 views
1

C#에서 웹 서비스 응용 프로그램이 있습니다. Visual Studio에서 디버그를 실행하면 http://localhost:######에서 서비스가 시작되고 링크가있는 Default.htm 페이지에 웹 서비스에 대해 수행 할 수있는 여러 가지 호출을 테스트 할 수있는 내용이 표시됩니다.웹 서비스 테스트

다른 컴퓨터에서 테스트하기 위해 로컬로 실행되는이 버전을 호출하는 방법이 있습니까? 테스트 페이지의 링크가 만들어내는 호출을 시도했지만 로컬 호스트를 실행중인 시스템의 IP 주소로 바꿨지 만 서버에 연결할 수 없다고 말했습니다.

+0

웹 서비스에는 대개 default.htm이 있지만 .asmx 페이지가 없습니다. 당신은 명확히 할 수 있습니까? – Victor

답변

6

포함 된 Visual Studio 웹 서버 (Cassini)는 로컬 컴퓨터에서만 액세스 할 수 있습니다. 다른 컴퓨터에서 웹 서비스를 사용하려면 IIS에 서비스를 배포 한 다음 http://xxx.xxx.xxx.xxx/MyWebService/MyWebService.asmx (xxx를 IP 주소 및 MyWebService로 대체하고 해당 IIS 웹 사이트로 대체 할 수 있어야합니다. 통로).

그런 다음 테스트 응용 프로그램을 만들려면 ASP.NET 웹 사이트 또는 WinForms/Console 응용 프로그램을 만들고 Visual Studio에서 웹 서비스 참조를 가져올 수 있습니다. 그러면 자동으로 프록시 클래스가 작성되어 서비스를 매우 쉽게 호출 할 수 있습니다.

+0

이 작업은 Project -> Visual Studio의 배포 패키지 빌드를 통해 수행됩니까? 전에 IIS로 일한 적은 없기 때문에 온라인에서 좋은 가이드를 찾으려고 노력했습니다. – John

+0

아직 설치하지 않았다면 IIS를 설치하십시오. http://learn.iis.net/page.aspx/28/installing-iis-7-on-windows-vista-and-windows-7/ 다음으로 빌드 -> 게시로 이동하여 파일 시스템을 위치로 선택한 다음 "..."을 클릭하여 넣으려는 위치로 이동할 수 있습니다. 로컬 IIS를 선택하고 새 웹 응용 프로그램을 만듭니다 (이렇게하려면 왼쪽 위 모서리에 단추가 있습니다). 목표로 설정하고 게시하십시오. – rswafford

0

Visual Studio의 내장 웹 서버 (Cassini)를 사용하는 경우 로컬에서만 호출 할 수 있습니다. 원격으로 연결하려면 IIS를 설치하고 프로젝트를 사용하도록 구성해야합니다.

0

예 아니요. 내장 된 ASP.NET dev 서버를 사용하는 경우 (대부분 ####을 가지고 있기 때문에), 외부에 연결할 수 있다고 생각하지 않습니다.

그러나 로컬 IIS 인스턴스에 "배포"할 수 있으며 다른 컴퓨터에서 손상 될 수 있습니다. Web Service Studio는 웹 서비스를위한 훌륭한 테스트 도구입니다. 거기에 정말 좋은 오픈 소스 도구가 있습니다. 나는 SoapUI 자신을 좋아한다.

1

서비스에 액세스 할 수 있도록 콘솔 응용 프로그램에 서비스를 래핑하면됩니다.

  1. 그것을 (서비스가 MysServiceConsoleHost 어쩌면 MyService 이름 또는 일부 팩스 경우) 의미가 무엇인가를 이름, 솔루션에 새 콘솔 응용 프로그램 프로젝트를 만듭니다.
  2. 이 프로젝트에는 서비스 프로젝트에 대한 참조가 포함됩니다. 새 프로젝트 (program.cs)에서
  3. 는 다음과 같은 것이있다 :

    using System; 
    using System.ServiceModel; 
    
    class Program 
    { 
        static String TITLE_TEXT = "MyService -- Console Host ({0})" + (System.Diagnostics.Debugger.IsAttached?" [DEBUG]":""); 
        static void Main(string[] args) 
        { 
        Console.Title = String.Format(TITLE_TEXT, "Not Running"); 
        try 
        { 
         ServiceHost host = new ServiceHost(typeof(MyService)); 
    
         Console.Title = String.Format(TITLE_TEXT, "Starting"); 
         host.open(); 
    
         Console.Title = String.Format(TITLE_TEXT, "Running"); 
         Console.WriteLine("Service is started, press any key to exit."); 
         Console.ReadKey(); 
    
         Console.Title = String.Format(TITLE_TEXT, "Closing"); 
         host.close(); 
         host = null; 
         Console.Title = String.Format(TITLE_TEXT, "Closed"); 
        } 
        catch (Exception ex) 
        { 
         Console.Title = String.Format(TITLE_TEXT, "Exception"); 
         Console.WriteLine("An error occured while running the host:"); 
         Console.WriteLine(ex.Message); 
         Console.WriteLine(); 
         Console.WriteLine(ex.StackTrace); 
         Console.ReadLine(); 
        } 
        } 
    } 
    

이 필요 MyService의 인스턴스를 교체를, 다음을 실행합니다. 서비스의 끝점, 실행할 포트 등을 지정하는 .config 파일이 있는지 확인하십시오. 그런 다음 모든 사람이 서비스에 액세스 할 수 있으며 필요한 경우 실시간 호출 중에 서비스를 통해 디버깅 할 수 있습니다. 이것에

+0

테스트가 필요한 웹 서비스이므로 http를 사용하여 액세스 할 수 있다고 생각합니다. –

+0

@Andy : 무슨 뜻인지 모르겠다. 이것은 IIS와 똑같은 기능을하는 동시에 직접 호출, 테스트 응용 프로그램, 라이브 연결 등을 통해 코드를 실행하는 편리함을 제공합니다. –

1

정말 간단한 해결책 localtunnel 사용하는 것입니다

http://progrium.com/localtunnel/

그것은 당신의 localmachine를 가리 킵니다과 컴퓨터의 외부 액세스 할 수있는 프록시를 설정합니다.

0

localhost에서 웹 서비스를 테스트 할 수 있습니다. 내 컴퓨터에 연결된 Windows CE Motorola 터미널이 있습니다. VS2008 컴퓨터에 있습니다. 내 컴퓨터 주소는 xxx.xxx.x입니다.xxx 및 webserver는 localhost : 62209이므로 터미널에서 i 웹 서비스 주소 : http://xxx.xxx.x.xxx/62209/MyWebservice.asmx을 사용하면 작동합니다. 터미널이 웹 서버가 실행되는 컴퓨터에 직접 연결되어있을 가능성이 있습니까? 어쨌든 작동합니다.