2012-01-17 22 views
0

私はwcfサービスをいくつかのクライアントに接続しました。そのうちの1人が切断してからプロキシセッションを終了し、他のユーザーに通知するなどwcfサービスへのすべてのクライアント接続を確認してください。

ただし、クライアントがwcfサービスから切断されることがあります(ユーザーがプロセスを終了するなど)。 このクライアントは切断され、他のクライアントに通知されます。

+1

ここに詳細を記入してください。どのバインディングを使用していますか?契約は何ですか? 「適切な」切断をどのように検出しますか?これは人々があなたの質問を理解するのに役立ちます。 – oleksii

+0

異なるクライアント間でセッションオブジェクトを管理していますか? –

+0

@oleksii適切に切断するのは、切断しようとするユーザーがブロードキャストの簡易メッセージリスト列挙型「ActionType.Disconnect」を送信する場合です。問題は、プロセスがちょうど閉鎖され、それがこのブロードキャスト()を呼び出す時間がないことです。 – Saint

答えて

4

クライアントが突然切断されるため、クライアントが切断されている場合はサービス側で知らないので、手動で切断する必要があります。

このためには、セッションオブジェクトにLastAccessTimeプロパティを追加する必要があります。これが完了したら、LastAccessTimeに基づいてセッションを切断するバックグラウンドワーカーの役割を書かなければなりません。すべてのリクエストで、この時間を現在の時間で更新します。

これが役に立ちます。