WCF-サービスの可用性をクライアントに確認させる[複製]
-
22-07-2019 - |
質問
この質問にはすでに回答があります:
- WCF Webサービスの可用性を確認 4つの答え
クライアントとサーバーの両方のシステムがありますが、サーバーが切断/停止したときにクライアントを「オフライン」状態にし、サーバーが自動的に「オンライン」に戻したいと思います再び利用可能です。
最初の部分では、チャネル障害イベントをリッスンし、クライアントをオフラインに設定することでそれを処理します。次に、サーバー上で「ping」サービスの呼び出しを開始します(30秒ごと)。これは、boolが生きている場合にboolを返すだけです。一度稼働すると、クライアントはブール値を取得し、オンラインに戻ります。
これはすべて機能しますが、私が抱えている問題は、クライアントがpingサービスを呼び出してサーバーがダウンすると、応答が送信されないことです(明らかに)、最終的に約2分後にエンドポイントが見つからないという例外が発生します。この時点で、すでに3〜4個のpingを試行しているため、3〜4個の例外が抽出されています。
私の質問は、pingサービスをより適切に処理するにはどうすればよいですか?理想的には、オンラインかどうかを知らせるサービスを定期的に呼び出して、そうでないかどうかをすぐに知らせたいと思います。
解決
これについて:
- サーバーの切断を検出した場合、「Ping」を入力します;モード
- 「pingモード」で、クライアントの「sendTimeout」を設定します。非常に短いもの、例えばサービスのPingメソッドへの呼び出しはほぼすぐに応答する必要があるため、2秒程度です
- " Ping"正常に動作したため、クライアントプロキシを再作成し、クライアントの" sendTimeout"を設定します。元の値に戻ります(デフォルトは1分-意味のあるものに依存します、15秒、30秒-何でも)
そのようにして、「Pingモード」にいる場合、応答(またはタイムアウト)を迅速に取得し、サービスの可用性を迅速に検出できます。
所属していません StackOverflow