2012-03-14 1 views
1

이 질문을 쓰는 이유는 WCF 서비스를 통해 Windows 서비스와 WPF 앱간에 통신하려고 할 때 다음과 같은 오류가 발생하는 것 같습니다. 바인딩 NetNamedPipe :WCF를 사용하는 Windows 서비스 NetNamedPipe를 사용하여 클라이언트와 통신

System.ServiceModel.EndpointNotFoundException : 거기 net.pipe에서 듣기에는 엔드 포인트 없었다 : // localhost를/Pipe_SendInfo


이제

피투성이의 세부 사항.

좋아요, 나는 주기적으로 코드를 실행하는 Windows 서비스를 가지고 있는데, 사용자가 서비스 내부에서 무슨 일이 일어나는지 알려주고 싶었습니다. 그래서 NetNamedPipe WCF 서비스를 통해이 작업을 수행 할 수 있다고 읽었습니다. 두 가지 테스트 응용 프로그램을 만들었고 성공적으로 한 프로세스에서 다른 프로세스로 메시지를 보낼 수있었습니다. 그때 :((동일한 컴퓨터에서) 클라이언트 응용 프로그램에 Windows 서비스에서 메시지를 보내 지금까지 비참하게 실패 시도

내 Windows 서비스는 기본적으로이 (정보를 보내려고)을 수행합니다.

ChannelFactory<SkipSyncLib.ISendInfo> pipeFactory = 
    new ChannelFactory<SkipSyncLib.ISendInfo>(
     new NetNamedPipeBinding(), 
     new EndpointAddress("net.pipe://localhost/Pipe_SendInfo")); 

pipeFactory.CreateChannel(); 
pipeFactory.SendInfo(info); 

과 정보를 수신하도록되어 응용 프로그램이 시작할 때이 작업을 수행합니다 Windows 서비스가 내가 다른 콘솔 응용 프로그램이 엔드 포인트를 찾기 위해 비참하게 실패하면서

public void Start() 
{ 
    HostService = new ServiceHost(this, new Uri[] { new Uri("net.pipe://localhost") }); 
    HostService.AddServiceEndpoint(typeof(ISendInfo), new NetNamedPipeBinding(), "Pipe_SendInfo"); 

    try 
    { 
     HostService.Open(); 
    } 
    catch (Exception exc) 
    { 
     //Error handling 
    } 
} 

키커는 그 수 있는지 실행중인 클라이언트 앱에 정보 보내기 성공적으로 그래서 논리는 아마도 사용자와 관련이 있다고 말할 것입니다. 그러나 나는 그것을 알아낼 수 없다.

아이디어가 있으십니까? 명명 된 파이프를 삭제하고 HTTP 바인딩을 사용해야합니까?

방금 ​​전에 명명 된 파이프에 대해 알아 냈으므로 대답이 명확한 경우 부드럽게 작성하십시오.

감사합니다.

+0

실행중인 OS는 무엇입니까? Windows Vista 이상인 경우 여기를 살펴보십시오. http://stackoverflow.com/questions/7477813/getting-endpointnotfoundexception-with-netnamedpipebinding-in-c-need-to-create. –

+0

Server 2008. 작동시키기위한 방법을 찾았습니다. 명명 된 파이프를 사용할 수 있도록 클라이언트 응용 프로그램과 Windows 서비스를 동일한 사용자로 실행해야했습니다. – Jose

답변

0

나는 그것이 작동하는 방법을 알아 냈습니다. 아마도 더 우아한 방법 일 것입니다. 그러나 Windows 서비스와 클라이언트 응용 프로그램이 동일한 사용자로 실행되면 통신 채널이 작동합니다.