質問

net.tcp 上でのみサポートされる設定がいくつかあるサービスがあります。別のエンドポイントを追加する最良の方法は何ですか?新しいホスト全体を作成する必要がありますか?

役に立ちましたか?

解決

サービスは 1 つのホスト内に複数のエンドポイントを持つことができますが、すべてのエンドポイントにはアドレス、バインディング、コントラクトの一意の組み合わせが必要です。IIS でホストされるサービス (つまり、.SVC ファイル) の場合は、エンドポイントのアドレスを 相対的 URI を指定し、Visual Studio または wsdl.exe で生成されたクライアントがコンストラクターでエンドポイントの名前を指定していることを確認してください。

MSDN の記事も参照してください 複数のエンドポイント.

他のヒント

サーバー上またはクライアント上で複数のエンドポイントを定義できます。

クライアントでこれを行うには、別の名前の新しいエンドポイントを使用して 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 を使用している場合は、新しいホスト全体を作成する必要があります。IIS は HTTP のみをサポートし、TCP バインディングはサポートしません。ただし、WAS または Windows サービスを使用している場合は、新しい net.tcp エンドポイントを作成するだけで済みます。

同じサービスに複数のエンドポイントを使用できます。次の方法でも Web 構成を構成できます

 <service name="MessagePatternDemo.Service1">  
 <endpoint name="ep1" address="/ep1" binding="basicHttpBinding" 
   contract="MessagePatternDemo.IService1"/>  
 <endpoint name="ep2" address="/ep2" binding="wsHttpBinding"  
   contract="MessagePatternDemo.IService1" />  
 <endpoint name="mex" contract="IMetadataExchange" address="mex"  
   binding="mexHttpBinding" />  
 </service>   
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top