2011-09-01 12 views
5

クライアントが切断されたことを知るWCFサービスを取得しようとしています。デュプレックスWCFサービスでのクライアント切断の処理

この記事を読んだ後、wcf notification on disconnect私はテストプロジェクトを手に入れることができました。

クライアントを閉じるまで、クライアントとサーバーは開いたままです。その後、次の行のタイムアウト後にOperationContext.Current.Channel.Closedイベントが発生するようです。

<reliableSession enabled="true" ordered="true" inactivityTimeout="00:01:00" /> 

これをテストした後、私が望むように動作した後、私は大きなプロジェクトに統合しようとしました。

これは、クライアントがまだ開いていても、設定<reliableSession ordered="true" inactivityTimeout="00:01:00" />で指定された時間後にOperationContext.Current.Channel.Closedが起動するという点で異なって動作するようです。

私が気づいたことは、configにenabled = "true"プロパティを指定できないということです。また、2番目のプロジェクトはWSDualHTTPBindingを使用しますが、最初のプロジェクトはWSHTTPBindingを使用します。

私の質問は、なぜこの方法で2番目のプロジェクトが動作し、最初のように動作させることができるのですか?

コードファイルや設定が必要な場合は、私にお知らせください。私はそれらをまっすぐにします。

種類よろしく

アッシュ

+0

クライアントが実行されているプラ​​ットフォームは何ですか? –

答えて

2

HTTPプロトコルは、本質的にステートレスで、純粋に/返信を要求します。 WSDualHTTPBindingがどのように機能するかは、サーバーとクライアントの両方でチャネルを開き、サーバーがメッセージを送信する準備ができているときにクライアントがホストしているメッセージを送信するチャネルを使用する場合です。何が起こっているのかは、クライアント上の接続が開かれ、何も聞こえないことです。これは「非アクティブ」として検出され、クライアントは接続を閉じます。私はあなたの要求が何であるか分かりませんが、ステートフルな接続なので、TCPBindingに切り替えることを検討したいかもしれません。

クライアントはサーバーからメッセージを受信できますか?メッセージは定期的に送信されますか?クライアントが実際に接続を開いていると確信していますか?

+0

こんにちはジェイソンは答えに感謝します。私はあなたの質問に答えを出し、すぐにここに投稿します。 – user589195

関連する問題