0

InstanceContextMode.Single として装飾された WCF (4.0) サービスがあり、サービスを実装するクラスはシングルトン パターンに従います。

まず、Instance 属性を使用して、サービス実装のシングルトン インスタンスを作成します。次に、 typeof() 引数でコンストラクターを使用するのではなく、この単一のインスタンスを ServiceHost のコンストラクターに渡します。

サービスで Open() を実行でき、次に Close() を実行でき、すべて問題ありません。しかし、明らかに Close() では、同じ ServiceHost で Open() を再試行すると ObjectDisposedException がスローされるため、どうにかしてシングルトン (???) を破棄します。

私のサービスは、Windows フォーム アプリケーションで NetTcpBInding を使用してホストされています。

4

1 に答える 1

0

同じ ServiceHost を再度開くことはサポートされていません。新しい ServiceHost を作成する必要があります。

ServiceHost は、ICommunicationObject ステート マシンを実装します。状態変化の理解から:

Closed 状態の場合、オブジェクトは基本的にステート マシンの最後に到達しています。オブジェクトがある状態から次の状態に遷移すると、前の状態には戻りません。

于 2013-01-22T06:38:41.533 に答える