우리는 WCF를 사용하여 다른 프로세스의 통신을 수신하는 .NET 프로그램을 가지고 있습니다. 명명 된 파이프를 사용했습니다.명명 된 파이프 충돌 방지
ServiceHost host = new ServiceHost(
typeof(Something),
new Uri[]
{
new Uri("net.pipe://localhost")
});
host.AddServiceEndpoint(typeof(ISomething), new NetNamedPipeBinding(), "Something");
host.Open();
코드는 타사 .NET 프로그램이 설치 될 때까지 훌륭하게 작동했습니다. 이제는 "파이프 이름 'net.pipe : // localhost /'에서 다른 파이프 엔드 포인트가 이미 해당 이름에서 수신 중이므로 수신 대기 할 수 없습니다."라는 메시지와 함께 열리지 않습니다.
내 가정은 다른 프로그램이 이미 명명 된 파이프를 사용하고 있다는 것입니다. 해결 방법이 있습니까 아니면 컴퓨터의 한 프로그램 만 명명 된 파이프를 사용할 수 있습니까? 나는 당신이 파이프의 "이름"을 설정할 수있는 다른 질문에서 인상을받습니다. 그래서 다른 프로세스와 충돌하지 않습니다. 어떻게합니까?
[SysInternals] (http://technet.microsoft.com/en-us/sysinternals/default.aspx)의 Handle.exe를 사용하여 현재 명명 된 파이프를 사용중인 응용 프로그램을 찾을 수 있습니다. 명령 "Handle.exe net.pipe :". [Rodney Viana의 게시물] (http://blogs.msdn.com/b/rodneyviana/archive/2011/03/22/named-pipes-in-wcf-are-named-but-not-by-you-and)를 참조하십시오. -how-to-find-the-actual-windows-object-name.aspx) – mcdon