У нас есть программа .NET, которая использует WCF для прослушивания связи из другого процесса. Мы использовали именованные каналы.Предотвращение конфликтов имен и имен
ServiceHost host = new ServiceHost(
typeof(Something),
new Uri[]
{
new Uri("net.pipe://localhost")
});
host.AddServiceEndpoint(typeof(ISomething), new NetNamedPipeBinding(), "Something");
host.Open();
Код работал отлично, пока не была установлена сторонняя программа .NET. Теперь сбой open с сообщением «Can not listen on pipe name» net.pipe: // localhost/', потому что еще одна конечная точка канала уже прослушивает это имя ».
Мое предположение заключается в том, что другая программа уже использует именованные каналы. Есть ли обходной путь или может только одна программа на компьютере использовать именованные каналы? Я получаю впечатление от других вопросов, что вы можете установить «имя» для трубы, чтобы он не противоречил другим процессам, как вы это делаете?
Может использовать Handle.exe из [SysInternals] (http://technet.microsoft.com/en-us/sysinternals/default.aspx), чтобы узнать, какое приложение использует в настоящее время ваш именованный канал. Команда «Handle.exe net.pipe:». См. Сообщение [Родни Виана] (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