異なる URL で異なる機能を参照する 2 つのエンドポイントを公開するように構成しようとしている WCF サービスがあります。
必要なのはService1で、メソッド A、B、C、およびService2を公開し、メソッド D、E を公開します。localhost /WebServiceName/Service1/Service.svcとlocalhost/WebServiceName/Service2/Serviceの両方を参照できるようにしたい.svc .
localhost/WebServiceName/Service1/Service.svcを参照する他のアプリケーションは、メソッド A、B、および C を含むインターフェイスのみを参照する必要があります。Service2インターフェイスに関するものは何も表示されません。Service2 についても同様です。
ここまでで、WCF サービスにI_Service1とI_Service2の 2 つのインターフェイスを定義しました。
次のように、web.config に 2 つのエンドポイントを追加しました。
<endpoint address="http://localhost/WebServiceName/Service1/" binding="wsHttpBinding" contract="WebServiceName.I_Service1" bindingConfiguration="Binding1" />
<endpoint address="http://localhost/WebServiceName/Service2/" binding="wsHttpBinding" contract="WebServiceName.I_Service2" bindingConfiguration="Binding2" />
エンドポイントで完全なアドレスを使用するという提案は、ここから来ています: IIS の下の複数のエンドポイント
それでも、 localhost/WebServiceName/Service1/Service.svcを参照できません。私は受け取ります:
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
localhost/WebServiceName/Service.svcを正常に参照でき、wsdl にはメソッド A、B、C、D、E が含まれています。しかし、これは私が望む動作では間違っているはずです。
見逃したものはありますか?
更新: この記事http://allen-conway-dotnet.blogspot.ro/2011/09/exposed-multiple-binding-types-for.htmlに従って、これらのエンドポイント用に 2 つの異なるコントラクト サービスを作成しました。しかし、現在、参照するとService1しか表示されません。Service2は明らかに存在しません (HTTP 404 エラー関連の問題が表示されます)。
構成は次のようになります。
<services>
<service behaviorConfiguration="WebServiceName.ServiceBehavior1" name="WebServiceName.Service1">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1"
contract="WebServiceName.I_Service1" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/WebServiceName/Service1/Service.svc" />
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="WebServiceName.ServiceBehavior2" name="WebServiceName.Service2">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1"
contract="WebServiceName.I_Service2" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/WebServiceName/Service2/Service.svc" />
</baseAddresses>
</host>
</service>
</services>