2009-03-20 61 views
5

WCFクライアント切断をどのように処理できますか?WCFクライアント切断の処理方法

私はCallBacksを試しましたが、「切断」ボタンを使用してクライアントが「はっきりと」切断された場合にのみ動作するようです。

手動切断またはクライアントプロセスがクラッシュした場合でも、クライアントが切断されたときにサーバーに通知する必要があります。

+0

お手伝いをすることができます。タイムアウトで再接続しようとしているのですか、または手動による接続/切断が必要ですか? –

+0

手動切断またはクライアントプロセスクラッシュでも、クライアントが切断されたときにサーバーに通知するようにしたい –

答えて

0

なぜクライアントが1秒ごとにサービスにpingを実行してからコールバックを実行するのかを知りません。コールバックが失敗すると、クライアントは切断されました。

0

ポーリングのバリエーションは、メッセージングを使用することです。クライアントは「私はここにいる」というメッセージを投稿し、切断されたときにメッセージを削除することができます。サーバーは、接続の切断を監視できます。別のオプションは、双方向HTTP通信BOSHを使用することです。これは、Webチャットクライアントが使用するものです。

7

OperationContext.Current.Channel.FaultedイベントとOperationContext.Current.Channel.Closedイベントを使用します。

これらのイベントは、クライアントが何らかの理由で切断された場合に発生します。

+0

OperationContext.Current.Channel.Closedイベントはいつでも私のために起動しません... イベントを発生させたい私はクライアントWinFormを終了するとき...私はWCFでwsDualHttpBindingを使用しています。 このイベントはどのように使用しますか? – Oliboy50

0

私は、クライアントが異常な方法で接続を切断すると、サーバーがそれを認識しているかどうかを確認する方法がないと言います。それはHTTPによく似ています。ブラウザを閉じると、強制終了してブラウザはサーバーに何も送信しません。

これはセッションタイムアウトが発生する理由の1つです。クライアントを切断し、サーバ側でクリーンアップするには、クライアントが何か間違っている(たとえば長すぎる操作など)場合や、サーバに知らせずに接続を切断した場合に使用されているすべてのものを取り除く。

0
if (HttpContext.Current.Response.IsClientConnected == false) 
{ 
..} 

それはあなたの質問は不明である

関連する問題