防止命名管道冲突

时间:2010-01-22 15:05:57

标签: wcf named-pipes

我们有一个.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程序之前,代码运行良好。现在打开失败,显示“无法监听管道名称'net.pipe:// localhost /',因为另一个管道端点已经在侦听该名称。”

我的假设是其他程序已经在使用命名管道。是否有解决方法或计算机上只有一个程序使用命名管道?我从其他问题中得到印象,你可以为管道设置一个“名称”,这样它就不会与其他进程发生冲突,你是怎么做到的?

1 个答案:

答案 0 :(得分:15)

您可以一次使用多个命名管道。从他的“编程WCF服务”一书中查看Juval Lowy的ServiceModelEx。您将看到他创建命名管道时,他使用的代码类似于:

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

哪个应避免名称冲突。