2011-08-03 5 views
0

이것은 쉬운 해결책 일 것입니다.콘솔 앱을 통한 호스트 WCF 서비스

나는 내가 app.config 파일의 구성을 제공 한이

static void Main(string[] args) 
    { 
     using (ServiceHost host = new ServiceHost(
      typeof(AmphoraService.ConsignmentService.Consignment))) 
     { 
      host.Open(); 
      Console.WriteLine("Consignment Service Activated! Press <Enter> to terminate " + 
       "the Host application."); 
      Console.WriteLine(); 
      Console.ReadLine(); 
     } 
    } 

같은 프로젝트에서 간단한 WCF 호스트를 만들었습니다.

Visual Studio에서 F5 키를 누르면 성공적으로 실행됩니다. 텍스트가 콘솔 창에 표시되고 "netstat -a"는 포트 808이 청취 중임을 나타냅니다 (nettcp 바인딩)

그러나 Visual Studio를 끝내고 bin \ debug ***를 클릭하십시오. exe 파일을 실행하면 콘솔 창이 나타나지만 아무 일도 일어나지 않습니다! 그리고 "netstat -a"는 포트 808이 듣고 있지 않음을 보여줍니다.

무엇이 내려다 보입니까?

+0

'Console.ReadLine()'다음에는'host.Close()'가 더 좋습니다. – fozylet

답변

1

아무 일도 일어나지 않으면 프로그램이 host.Open() 행에있을 가능성이 있습니다. 해당 인스턴스에 시각적 스튜디오를 연결해보십시오 (디버그> 처리를 사용하여 처리).

또한 잠시 대기 시도하고 당신이 예외가 발생하는 경우 등 ServiceHost를이 서비스 개체를 아마도

일부 자원을 instansiate하려고 할 때 뭔가 잘못 가고있는 타임 아웃이나 뭐, 그 가능한 볼 수 있습니다

(Visual Studio에서) 처음 실행할 때 잠긴 상태가됩니까? 재부팅하고 익스플로러에서 exe를 먼저 실행하면 어떨까요?

+0

음 ... 실제로 저는 여기서 너무 빨랐습니다. Visual Studio 호스팅 프로세스 (.... vshost.exe)를 활성화하면 서비스가 번개를 빨리 시작하는 것 같습니다. 그러나이 기능을 비활성화하면 시작하는 데 약 2 분이 걸립니다. 이상합니다. – Martin

+1

hm ok, 서비스 클래스의 생성자에서 중단 점을 설정하고 도달하는 데 걸리는 시간을 확인하십시오. 어떤 교통편을 사용하고 계십니까? – aL3891

+0

nettcp 바인딩을 사용하고 있습니다. 야, 지금은 작동, 시작 시간은 나를 걱정하지 않습니다. 내 문제를 해결하려고 애를 썼다. 감사 – Martin