セッションが有効になっている二重 WCF サービスがあり、クライアントで障害状態の例外を回避しようとしています。
このトピックに関するいくつかの議論を見つけましたが、私が見つけたすべては、クライアント プロキシまたはチャネルを再作成することを示唆しています。非は、セッションが有効な二重サービスに焦点を当てています。
このアプローチの問題点は、サーバーにはクライアントごとに 1 つのセッションがあり、各クライアントにはサービス プロキシ (シングルトン サービス プロキシ) のインスタンスが 1 つしかないことです。二重であるため、クライアント側ではいくつかのオブジェクトがそのサービス インスタンスのイベント (サーバーからクライアントに送信されるメッセージ) をリッスンしています。サービスが障害状態にある場合、それ以上使用することはできません。そのインスタンスを破棄して新しいインスタンスを作成すると、すべてのイベント ハンドラーをこの新しいインスタンスに再度接続するのが難しくなります。
サービスをラップし、オブジェクトがイベントにフックするたびに、ハンドラーをリストに格納する必要があります (サービスが再作成されたときに再フックできるようにするため)。コードが失われているようで、メモリリークしやすい...
すべてのプロキシ インスタンスを破棄せずに、クライアント プロキシ/チャネルを再起動する方法はありますか? (私はVSで生成されたプロキシを使用しています)
何か案は?
ありがとう、MAB