ここからのさまざまな指示に従って、http と https の両方をサポートするように WCF サービスを構成しました。基本的に、プロトコルごとにエンドポイントを複製する必要があることを彼らはほとんど指摘しているので、サーバーは次のように構成されています。
<service behaviorConfiguration="MyApp.WebServices.ServiceBehavior" name="MyApp.WebServices.ServiceLibrary">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpsBinding" name="AuthenticationService" contract="MyApp.WebServices.IAuthenticationService" />
<!-- HTTP enpoints -->
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicBinding" name="AuthenticationService" contract="MyApp.WebServices.IAuthenticationService" />
</service>
そのため、エンドポイントごとに http 用と https 用の異なるバインディングがあります。
私の問題は、Visual Studio 2010 Service References を使用してこの Web サービスのクライアントを作成するときです。サービス参照を次のいずれかにポイントできるようにしたいと思います。
http://mysite.com/myapp/servicelibrary.svc
また
https://mysite.com/myapp/servicelibrary.svc
私の理想的なシナリオは、サービス参照が http または https を使用している場合、同じプロトコルを使用する適切なエンドポイントのみがクライアントの app.config ファイルに取り込まれることです。そのまま、http サービス ライブラリを参照すると、次のようなエンドポイントの両方のペアが得られます。
<client>
<endpoint address="https://ip-0af84f03/myapp/ServiceLibrary.svc"
binding="basicHttpBinding" bindingConfiguration="AuthenticationService"
contract="Services.IAuthenticationService" name="AuthenticationService" />
<endpoint address="http://mysite.com/myapp/ServiceLibrary.svc"
binding="basicHttpBinding" bindingConfiguration="AuthenticationService1"
contract="Services.IAuthenticationService" name="AuthenticationService1" />
</client>
したがって、AuthenticationService から関数にアクセスしようとすると、次のエラーが発生します。
コントラクト 'Services.IAuthenticationService' のエンドポイント構成セクションを読み込めませんでした。そのコントラクトの複数のエンドポイント構成が見つかったためです。優先エンドポイント構成セクションを名前で示してください。
クライアントの app.config から不要な重複エンドポイントを手動で削除することでエラーを取り除くことができることはわかっていますが、サービス参照を設定するときに最初にエンドポイントが表示されないようにすることをお勧めします。
これは可能ですか?