Tenemos un programa .NET que utiliza WCF para escuchar la comunicación de otro proceso. Usamos tubos con nombre.Prevenir el conflicto de tuberías con nombre
ServiceHost host = new ServiceHost(
typeof(Something),
new Uri[]
{
new Uri("net.pipe://localhost")
});
host.AddServiceEndpoint(typeof(ISomething), new NetNamedPipeBinding(), "Something");
host.Open();
El código funcionó muy bien hasta que se instaló un programa .NET de terceros. Ahora la apertura falla con un mensaje de "No se puede escuchar el nombre de la tubería 'net.pipe: // localhost /' porque otro extremo de la tubería ya está escuchando ese nombre."
Mi hipótesis es que el otro programa ya está utilizando canalizaciones con nombre. ¿Hay alguna solución alternativa o solo un programa en una computadora puede usar conductos con nombre? Me da la impresión de que puede establecer un "nombre" para una tubería para que no entre en conflicto con otros procesos. ¿Cómo lo hace?
Puede usar Handle.exe desde [SysInternals] (http://technet.microsoft.com/en-us/sysinternals/default.aspx) para averiguar qué aplicación está utilizando actualmente utilizando su canalización con nombre. Comando "Handle.exe net.pipe:". Ver [publicación de 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-real-windows-object-name.aspx) – mcdon