2010-07-23 3 views
3

그래, 가능한 한 솔직하게 만들려고 노력할 것입니다. VS2010에서 VB.Net을 사용하고 있습니다. WCF 서비스를 자체 호스팅하려고합니다. (실제로는 Windows 서비스에 있지만 간단한 콘솔 앱을 통해이 작업을 수행하려고합니다 아래 코드는 문제의 코드이며 TCP/IP 주소는 여기에 직접 입력됩니다 WCF 서비스 자체는 단순히 DEFAULT라는 새로운 WCF 서비스 프로젝트. 내가이 훨씬 더 간단 할 수 있다고 생각하지 않습니다WCF가 TCP 포트에 바인딩되지 않음 (netstat -a를 통해 확인)

Dim host As New ServiceHost(GetType(TestService)) 

Dim tcpb As New NetTcpBinding() 
tcpb.PortSharingEnabled = True 
host.AddServiceEndpoint(_ 
    GetType(ITestService), _ 
    tcpb, _ 
    "net.tcp://localhost:62020/TestWcfService/" _ 
) 

host.Open() 

Console.ReadKey(True) 

host.Close()

.. 내가 netstat -a을 실행할 때 청취를 표시하지 않습니다? 실제로 바인딩 할 포트를 얻기 위해해야 ​​할 특별한 무언가가있다 port on 62020 난 정말 내 whits 끝에 이것에.

배경 : IIS에서 마이그레이션하려고하는 또 다른 WCF 서비스가 있고 Windows 서비스에서 실행되는 별도의 서버로 .WCF 서비스는 것입니다 내부적으로 액세스 할 수 있습니다. 나는 마이그레이션을 얻는 데 많은 문제를 겪었으므로 바인딩 할 간단한 서비스를 얻고 클라이언트 (웹 사이트)에 액세스하도록하십시오. 다른 WCF는 바인딩 (다른 포트)이지만 통신 오류가 발생합니다. 문자 그대로 **** - 톤의 물건이 있고, 거의 나의 요구에 맞지 않으며, 나는 그것으로 작업하는 데 많은 어려움을 겪고 있습니다.

답변

2

새 서비스를 테스트 할 때 정확히 동일한 문제가 발생했습니다. 나는 단순히 [ServiceContract] 속성으로 서비스 인터페이스를 표시하는 것을 잊어 버렸습니다. WCF는 서비스 계약이 없기 때문에 끝점을 만드는 데 신경 쓰지 않았다고 생각합니다.

적어도 하나의 계약이 구현되지 않은 상태에서 ServiceHost를 열 사람을 상상할 수는 없으므로 오류 메시지가 좋았을 것입니다.하지만 .NET 4에서 단순화 된 구성을 사용하는 경우에만 발생합니다.

+0

아니요 ... 인터페이스가 ... :/good point를 지정합니다. – Tracker1

+0

비슷한 문제로 밝혀졌습니다 ... 적절한 바인딩과 별도로 엔드 포인트 uri를 추가했습니다 ... 현재 코드에서 수행 중이지만 구성 기반 설치 (서비스/클라이언트 설정 사용을 위해 조정 중입니다.) ... 클라이언트 프록시는 백엔드가 여러 시스템에서 실행되므로 (사용자/세션에 따라) 여전히 코드화됩니다. – Tracker1

관련 문제