2010-02-05 2 views
1

윈도우 서비스 레지스트리에서 동적 할당 포트을 수신 대기하는 WCF 서비스 이 있습니다. 다른 C# 응용 프로그램에서이 서비스의 수신 대기 주소를 찾는 방법은 무엇입니까? 아니면 최소한이 서비스의 항구? ServiceHost를 연 후WCF 서비스의 청취 주소/포트를 얻으려면 어떻게해야합니까?

덕분에, 아드리아나

+0

답변을 찾았습니까? –

답변

7

당신은 "ChannelDispatcher"속성을 사용하여, 서비스 구현 내부에서 실제 "리스너"덤프 할 수 있습니다. 예를 들어

:

foreach (var channelDispatcher in serviceHost.ChannelDispatchers) 
{ 
      Console.WriteLine(channelDispatcher.Listener.Uri); 
} 

리스너의 URI는 서비스가 listenting하는 TCP/IP 포트를 포함합니다. 이것은 물론 TCP/IP를 기반으로하는 바인딩의 경우에만 해당됩니다. 분명히 각 서비스에는 다중 리스너 (또는 리스너 포트)가있을 수 있으므로 "ChannelDispatchers"속성은 여러 리스너를 반환 할 수 있습니다.

"State"속성의 값을 확인/덤프하여 해당 채널 운영자가 "열기"(예 : 듣기) 상태인지 확인할 수도 있습니다.

편집 : enabling WMI for WCF을 살펴볼 수도 있습니다. 비록 내가 그것을 들여다 보지는 않았지만, 그러한 정보를 밝힐 수도 있습니다.

서비스의 코드를 수정할 수 없거나 "Process Explorer"또는 "netstat"과 같은 도구를 사용해야하는 경우 (나중에 다시 TCP/IP 기반 바인딩을 사용한다고 가정) 서비스의 끝점). netstat의 "-b"옵션을 사용하여 각 포트의 PID 및 실행 파일 이름을 표시하십시오. 그러면 서비스 (실행 파일)에 대한 힌트를 얻을 수 있습니다.

+0

왜 이것이 허용되지 않습니까? – mafu

관련 문제