Предотвратите конфликт именованных каналов

У нас есть программа.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 не было установлено. Теперь открытые сбои с сообщением "Не могут послушать в сети pipe: 'имени канала//localhost /' потому что другая конечная точка канала уже слушает на том имени".

Мое предположение - то, что другая программа уже использует именованные каналы. Существует ли обходное решение, или может только одна программа на компьютере использовать именованные каналы? Я получаю впечатление от других вопросов, что можно определить "имя" для канала так это, doens't конфликтуют с другими процессами, как дела это?

7
задан 22 January 2010 в 15:05
поделиться

1 ответ

Можно использовать несколько именованных труб одновременно. Взгляните на ServiceModelEx Юваля Лоуи из его книги Programming WCF Services. Вы увидите, что когда он создает именованные трубы, он использует код, который выглядит как нечто подобное:

Uri baseAddress = new Uri("net.pipe://localhost/" + Guid.NewGuid().ToString());

Который должен избегать конфликтов имен.

15
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: