我们有一个.NET程序,它使用WCF来侦听来自另一个进程的通信.我们使用命名管道.
ServiceHost host = new ServiceHost(
typeof(Something),
new Uri[]
{
new Uri("net.pipe://localhost")
});
host.AddServiceEndpoint(typeof(ISomething), new NetNamedPipeBinding(), "Something");
host.Open();
Run Code Online (Sandbox Code Playgroud)
代码工作得很好,直到安装了第三方.NET程序.现在打开失败,显示"无法监听管道名称'net.pipe:// localhost /',因为另一个管道端点已经在侦听该名称."
我的假设是其他程序已经在使用命名管道.是否有解决方法或计算机上只有一个程序使用命名管道?我从其他问题中得到印象,你可以为管道设置一个"名称",这样它就不会与其他进程发生冲突,你是怎么做到的?
Ash*_*nKJ 15
您可以一次使用多个命名管道.从他的"编程WCF服务"一书中查看Juval Lowy的ServiceModelEx.您将看到他创建命名管道时,他使用的代码类似于:
Uri baseAddress = new Uri("net.pipe://localhost/" + Guid.NewGuid().ToString());
Run Code Online (Sandbox Code Playgroud)
哪个应该避免名称冲突.
归档时间: |
|
查看次数: |
6571 次 |
最近记录: |