0

私は .NET 4.0 で ws-discovery を使用していますが、うまく機能しています。私が抱えている質問の 1 つは、機能していないサービスにどう対処するかということです。たとえば、サーバー A とサーバー B に IService があるとします。サーバー A のこのサービスが壊れているとします (アプリケーション プールを停止してこれを模倣します)。クライアントは引き続き 2 つのサービスを見つけるため、サービスを使用しようとすると、それが機能していることを保証できません。

私の質問は、エンドポイントをループしてこれに対処し、最初のエンドポイントが失敗した場合は次のエンドポイントを試すことです。または、検索時に「稼働中」のサービスのみを取得する方法はありますか? それとも、私はどこかでポイントを逃していますか - おそらく:-)

ありがとう

4

2 に答える 2

0

これは、wcf ディスカバリーの一般的な問題であることがわかりました。サーバーが 2 つのネットワーク上にある場合、同様の問題が発生します。ディスカバリは両方の nic アドレスを返しますが、もちろん、クライアントはこれらのネットワークの 1 つを介してのみサーバーに到達できます。

私が使用している回避策は、「void Ping()」関数をサーバーに追加することです。次に、検出後、クライアントは検出されたすべてのエンドポイントでこの「Ping()」関数を呼び出そうとします。応答を返すものは良いもので、他は悪いものです。

私はこれをさらに一歩進めて、この「Ping()」関数を時折呼び出し続けるスレッドを生成しました。次に、適切なサーバーがなくなると、スレッドはその uri を「適切な」uris のコレクションから削除します。

あなたの痛みが分かります。

于 2011-08-18T18:53:28.653 に答える
-1

この記事は、実行時にエンドポイント アドレスを決定することで、あなたが話していることをカバーしているようです。

http://weblogs.asp.net/gsusx/archive/2009/02/13/using-ws-discovery-in-wcf-4-0.aspx

于 2009-12-01T18:36:51.703 に答える