質問

設定するには、どのように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つのサービスがあります。

クライアントで

あなたがプログラムに最初の試み最初のポートことを必要とする、それが失敗した場合、それは第二の試み。

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