設定WCFは、2つのエンドポイントのいずれかを使用するには
-
23-09-2019 - |
質問
設定するには、どのようにWCFはちょうど使用する 1 利用可能な2つのエンドポイントの?
私は2つのTCPポート(したがってnetTcpBinding
を使用)が必要です。サービスホストは、まず、第1のポートにバインドしようとする必要があります。それが失敗し、それが失敗した場合のみならば、それは第2のポートにバインドしようとする必要があります。
編集
私はそれをプログラム的achivedすることができます知られているが、私の意図は(のみ.config
ファイルを使用して)宣言的にそれを行うには。
解決
あなたのプロキシオブジェクトを使用して接続を開く前に、
ポート番号を含むエンドポイントアドレスは、プロセスの任意の時点でコードで設定することができます。だから、アドレスを設定して、接続をテストし、それが失敗した場合、他のポートを試すことができます。ここでうまくいけば私のポイントを説明するいくつかのコードがあります。
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()
他のヒント
サーバ側の2つのバインディングとサービスを露出する問題がない。
しかし、クライアント側で使用すると、(その旨またはワード)の重複契約エラーが発生します。
はそれを行うための1つの方法は、2つのインタフェース名を除いて同一である(契約書)を作成することです。
あなたは、この実装から、各サービスの継承を実装の単一のコピーを持っています。
あなたその後、同じ実装/機能を有する異なるポート、上の2つのサービスがあります。
クライアントであなたがプログラムに最初の試み最初のポートことを必要とする、それが失敗した場合、それは第二の試み。
所属していません StackOverflow