0

利用可能な 2 つのエンドポイントの1 つだけを使用するように WCF を構成する方法は?

2 つの TCP ポートが必要です (したがって を使用しますnetTcpBinding)。サービス ホストは、最初のポートへのバインドを最初に試行する必要があります。失敗した場合にのみ、2 番目のポートへのバインドを試行する必要があります。

編集

プログラムで達成できることはわかっていましたが、宣言的に(.configファイルのみを使用して)行うつもりです。

4

2 に答える 2

2

ポート番号を含むエンドポイント アドレスは、プロキシ オブジェクトを使用して接続を開く前に、プロセスのどの時点でもコードで設定できます。したがって、アドレスを設定して接続をテストし、失敗した場合は他のポートを試すことができます。これが私の要点をうまく説明するコードです。

Dim oProxy as New YourWCFServiceType()

oProxy.Endpoint.Address = New System.ServiceModel.EndpointAddress(New Uri("The address and port number you want to try first"))

Dim FirstBindingSucceeded as Boolean
Try
    oProxy.Open()
    FirstBindingSucceeded = True
Catch
End Try

If FirstBindingSucceeded = False Then
    oProxy.Endpoint.Address = New System.ServiceModel.EndpointAddress(New Uri("The address and port number you want to try second"))
End If

oProxy.Open()
于 2010-01-27T22:31:55.203 に答える
1

サーバー側では、2 つのバインディングを使用してサービスを公開することに問題はありません。

ただし、クライアント側では、重複した契約エラー (またはその旨の言葉) が表示されます。

これを行う 1 つの方法は、名前以外は同一の 2 つのインターフェース (コントラクト) を作成することです。

実装の単一のコピーがあり、各サービスはこの実装から継承します。

次に、同じ実装/機能を持つ異なるポートに 2 つのサービスがあります。

クライアントでは、最初のポートを最初に試行し、それが失敗した場合は 2 番目のポートを試行するようにプログラムする必要があります。

于 2010-01-27T18:31:53.350 に答える