2009-11-04 5 views
3

두 개의 Visual Studio 솔루션에 대한 원본이 있습니다. 하나는 WCF 서비스를 호출하는 웹 사이트이고 다른 하나는 DLL로 컴파일되는 WCF 서비스입니다. 이 웹 사이트에는 WCF 서비스의 바이너리 DLL이 참조되어 있습니다.WCF 서비스 라이브러리 디버깅 - 어떻게 "실행"합니까?

다음과 같은 문제가 있습니다. 웹 사이트를 실행할 때 캐치되지 않는 예외가 WCF 서비스에서 나옵니다.

WCF 서비스에서 중단 점을 설정할 수 있도록 Visual Studio에서 WCF 서비스를 어떻게 실행합니까? 서비스 프로젝트가 DLL로 컴파일되도록 설정되었으므로 중단 점이있는 DLL을 디버깅 할 수 없습니다. 한 번 Visual Studio 인스턴스에서 서비스를 "실행"하고 다른 인스턴스에서 웹 사이트를 실행하지 못하도록 예외를 실행하려면 어떻게해야합니까?

이것은 WCF에 처음 노출 된 것입니다.

추신 : 웹 사이트 솔루션에 WCF 서비스 프로젝트를 추가하고 WCF 서비스의 종속성으로 인해 디버깅 할 수없는 방법에 대한 오류가 표시되어 보이지 않습니다. 옵션에.

답변

5

WcfSvcHost.exe을 사용하여 서비스를 호스팅하고 디버깅 할 수 있습니다. 서비스는 어떻게 호스팅됩니까? 호스트 프로세스가 실행 중일 때 호스트 프로세스에 직접 연결할 수도 있습니다.이 프로세스는 환경 문제 일 수 있으므로 더 나은 솔루션 일 수 있습니다.

+0

+1 조금씩 알려져 있고 종종 무시당한 보석입니다. –

3

호스트이 필요합니다. WCF에서, 당신은 두 가지 옵션이 있습니다 : IIS에서

  • 호스트/WAS (IIS6에 대한 것으로는 HTTP 바인딩을 위해 작동합니다 IIS7/지원 모든 바인딩 WAS) 콘솔 응용 프로그램에서
  • 자기 호스트, 윈폼 응용 프로그램 , NT 서비스

또는 Andrew는 이미 언급했듯이 테스트/디버깅 목적으로 콘솔 앱에서 기본적으로 자체 호스팅하는 일반 WcfSvcHost.exe 앱을 사용합니다.

작은 호스트가있는 경우 솔루션에 프로젝트를 추가하고 "Windows 콘솔 응용 프로그램"으로 만들고 서비스 라이브러리 프로젝트에 대한 참조를 추가 한 다음 기본적으로 다음 코드를 사용할 수 있습니다.

static void Main(string[] args) 
    { 
     using (ServiceHost host = new ServiceHost(typeof(YourWCFService))) 
     { 
      host.Open(); 
      Console.WriteLine("Service host running......"); 

      Console.ReadLine(); 

      host.Close(); 
     } 
    } 

이렇게하면 ServiceHost 인스턴스가 만들어지고, 내부에 서비스 클래스가 추가되며 호스트가 열립니다. 이제 수신 전화를받을 수 있습니다. 요청을 청취 할 방법과 장소를 알기 위해서는 약간의 설정이 필요합니다.하지만 기본적으로는 그것입니다.

마크

+0

모든 바인딩에 대해 WcfServiceHost가 작동하지 않기 때문에 +1했습니다. IE wsDualHttpBinding –

+0

자기가 내 wcf 서비스 라이브러리를 호스트하려고하는데 릴리스 될 때 실행 시간이 바뀌었지만 디버그에서 어떤 아이디어가 원인 일 수 있습니까? – ZoomVirus

관련 문제