質問

    

この質問にはすでに回答があります:

    
            
  •              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モード」にいる場合、応答(またはタイムアウト)を迅速に取得し、サービスの可用性を迅速に検出できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top