0

同じ WCF サーバー (NetNamedPipes) の複数のインスタンスを作成しようとしています (アプリケーションを数回起動しています) が、2 番目のインスタンスの起動時に問題が発生しています... サーバー インスタンスは異なるパイプ名とエンドポイント名を使用しています。hereの例を使用し、起動引数を介してエンドポイントとパイプ名のみを設定しました。しかし、2 番目のインスタンスでは、障害のある状態であるためサービスホストを開くことができないというエラー メッセージが表示されます。

さまざまなポートで 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別のエンドポイントが既にこのエンドポイントをリッスンしているため。

4

1 に答える 1