我正在尝试创建同一 WCF 服务器 (NetNamedPipes) 的多个实例(多次启动应用程序),但在启动第二个实例时遇到问题......服务器实例使用不同的管道名称和端点名称。我使用了此处的示例,仅通过启动参数设置端点和管道名称。但是在第二种情况下,我收到一条错误消息,指出存在错误状态,因此无法打开服务主机。
使用具有不同端口的 Http 绑定是可行的,但我想坚持使用命名管道。
服务器:
[ServiceContract]
public interface IServiceContract
{
[OperationContract]
string Operation(string value);
}
class Program : IServiceContract
{
static void Main(string[] args)
{
Console.WriteLine($"Pipe: {args[0]}");
Console.WriteLine($"Endpoint: {args[1]}");
ServiceHost sh = new ServiceHost(typeof(Program), new Uri($"net.pipe://{args[0]}"));
sh.AddServiceEndpoint(typeof(IServiceContract), new NetNamedPipeBinding(), args[1]);
sh.Open();
Console.ReadLine();
}
public string Operation(string value)
{
return value.ToUpper();
}
}
错误消息:AddressAlreadyInUseException
因为不同的端点已经在监听这个端点。