net.tcp でのみサポートされるいくつかの設定を持つサービスがあります。別のエンドポイントを追加する最良の方法は何ですか? 新しいホスト全体を作成する必要がありますか?
4 に答える
サーバーまたはクライアントで複数のエンドポイントを定義できます。
クライアントでこれを行うには、別の名前の新しいエンドポイントで app.config ファイルを編集し、新しいクライアントを作成するときに定義するだけです。
たとえば、クライアント アプリに次のようなエンドポイントがあるとします。
<endpoint address="https://yourdomain.com/WCF/YourService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IYourService"
contract="MessagingService.IYourService"
name="BasicHttpBinding_IYourService" />
あなたが呼び出す方法:
YourServiceClient client = new YourServiceClient();
新しい名前で新しいエンドポイントを追加できます。
<endpoint address="https://yourotherdomain.com/WCF/YourService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IYourService"
contract="MessagingService.IYourService"
name="BasicHttpBinding_IYourService_ENDPOINT2" />
あなたが呼び出すことができるもの:
YourServiceClient client = new YourServiceClient("BasicHttpBinding_IYourService_ENDPOINT2");
上記のドメインを変更しただけですが、新しいバインディング構成セクションを作成した場合は、「bindingConfiguration」値を変更するだけで済みます。
サービスは単一のホスト内に複数のエンドポイントを持つことができますが、すべてのエンドポイントにはアドレス、バインディング、コントラクトの一意の組み合わせが必要です。IIS でホストされるサービス (つまり、.SVC ファイル) の場合は、エンドポイントのアドレスを相対URI に設定し、Visual Studio または wsdl.exe によって生成されたクライアントがコンストラクターでエンドポイントの名前を指定していることを確認します。
MSDN の記事「複数のエンドポイント」も参照してください。
現在 IIS をホストとして使用している場合は、新しいホスト全体を作成する必要があります。IIS は HTTP のみをサポートし、TCP バインディングはサポートしていません。ただし、WAS または Windows サービスを使用している場合は、新しい net.tcp エンドポイントを作成するだけで済みます。